![]() |
CIM->Victor 884->Arduino not working
I'm trying to control a CIM Motor (Foward, Reverse, Stop, Etc.) with a Victor 884 controlled by an Arduino Uno Microcontroller. So far I've tried a couple different things and well I'm fed up and figured I'd show you guys how everything is hooked up to see if someone see's what I'm doing wrong.
Before you guys respond I want to set a few things: I'm not going to use a Crio I'm not going to use the IFI control system I'm not using a FIRST control system. It doesn't matter if any of this is against FIRST rules I'm not doing this for FIRST. However despite the fact that this is not for FIRST I'm going to ask the questions here because it contains the largest amount of people that could help. ![]() This is how everything was hooked up originally and I've also tried hooking up a mosfet powered by the 5v line of the arduino. And I've also tried putting a 5v regulator powered by the FRC battery and then using the 5v line to power a mosfet to boost the signal to the victor, but everytime the victor just flashes orange (no pwm) |
Re: CIM->Victor 884->Arduino not working
Have you tried connecting the grounds between the FRC battery and the Arduino?
|
Re: CIM->Victor 884->Arduino not working
I've never tried this personally, but if I had to hazard a guess it would be that delay takes an unsigned long as an argument, but you're passing a floating-point time. You probably want to use delayMicroseconds(). Also, the WPILib comments say that the Victor prefers 10ms periods.
You might also want to check out the Servo library. It's designed for servos that go to specific angles, but it should work for this case as well. I think you'd want to use writeMicroseconds() for the high pulse, and then just delay for the remainder of the period. |
Re: CIM->Victor 884->Arduino not working
You want to use the Arduino Servo class to generate a PWM signal.
Connect the cable to a PWM pin rather than a DIO and use the functions in the Servo class to drive the Victor. |
Re: CIM->Victor 884->Arduino not working
The ground pin on a Victor is at the other end of the PWM input connector from the signal pin. The center pin is not used, but it's typically labeled as the power input. Your picture shows the ground and power connections reversed.
|
Re: CIM->Victor 884->Arduino not working
The pin on the arduino and frc battery are grounded together i forgot to put that in. Also the pwm wires on the victor are correct in real life I forgot to put them in the right order in the drawing. Also the servo library gives the same results
|
Re: CIM->Victor 884->Arduino not working
you will have to use the aruidno servo library to have the arduino generate PWM signals. As seen here, http://playground.arduino.cc/ComponentLib/servo
you would have to attach the black wire(from victor) to any ground pin. Then the white to an arduino pin with PWM(i think its has a curvy line next to pin number label.) Then the red wire you have no use for. so a simple sample: #include <SoftwareServo.h> Servo myservo(any name can be put here this example uses myservo); // create servo object to control a servo // a maximum of eight servo objects can be created void setup() { myservo.attach(9); // attaches the servo on pin 9 to the servo object } void loop() { myservo.write(0) (writing the servo at value of 0 will spin motor full speed coutnerclockwise. and a value of 180 will spin motor to full speed in clockwise direction. and a value of 90 is no spin or stop) } I will assume you know how to wire the battery to the victor. the sample code is not perfect there are mistakes. but i hope it helps. |
Re: CIM->Victor 884->Arduino not working
I've done a similar project before, but with Jags instead. I used the PWM generating function onthe Arduino, and I beleive I mapped the desired power value onto a 900 microsecond to 2100 microsecond range (full reverse to full forward).
With the Arduino, I've always found that the premade libraries work far beter than a function you tried to put together yourself. Just a word of advice. |
Re: CIM->Victor 884->Arduino not working
You can use the analogWrite() function for PWM so you don't need the Servo library. (that is not a typo, analog, not digital even though you are on a digital pin)
We are currently using this on our test disc shooter. I did find that the PWM output is not a perfect match for our Victor (an old one, not an 888). Even after calibrating I found that a value above 253 caused a problem. We are using a potentiometer as input and map the ADC range of 0-1024 to 183 to 253 (one direction, deadband) works pretty well for our particular Victor. You should probably profile yours to find a good range. I have not put a scope on the PWM out, but I supect it (the output pulse width) is not perfect for the Victor. HTH |
Re: CIM->Victor 884->Arduino not working
This is working code, I have two pots, one is set only goes one direction, the other pot goes full rev -> 0 -> full forward. This was hacked together a couple of years ago, and put in an Altoids can, we are using it to prototype again this year.
Code:
#include <Servo.h> |
Re: CIM->Victor 884->Arduino not working
Quote:
|
Re: CIM->Victor 884->Arduino not working
Quote:
|
Re: CIM->Victor 884->Arduino not working
Quote:
V=IR I=V/R I=Voltage drop across resistor/10 ohms I=Vresistor*.1 |
Re: CIM->Victor 884->Arduino not working
500 ma seems way too high. You might even have damaged the opto-isolator's emitter. I've never been able to find a Victor schematic, but the datasheet for the Jag's opto-isolator says it has an absolute maximum continuous current rating of 60 ma for the input. The cable I am using for my test equipment here delivers about 5.6 ma to the Victor during the pulse, and it works fine. Can you post a picture of your scope's current waveform? |
Re: CIM->Victor 884->Arduino not working
Quote:
|
| All times are GMT -5. The time now is 18:16. |
Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi