Q: I would like to enquire if "running a continuity test/check with a multimeter" on the 8 transistors (with metal screws) are supposed to BEEP?
Because I replaced all the 8 metal screws with longer screws, and I worry if I made a mistake (shorted any circuit).
I tested for continuity by attaching the multimeter probes directly onto 2 different metal screws (and the result is that they are all connected to each other; i.e. BEEP).May I ask what should be the correct result?
A: All the screws go through the aluminium heatsink and are therefore connected.
This is why the regulator and power transistor near the USB socket use nylon screws and insulating washers.
The power FETs used for motor control are fully insulated and thus not affected by the screws.
If you replace the nylon screws with metal then the heatsink will be connected to +5V (Vcc) and the processor would be damaged when using the battery charging circuit.
vsming wrote:Dear RoboSavvy,
I have a few question
I would like to enquire what do the 4 LEDs near the 5V regulated output signal to the user?
Example:
When I download a sketch into the controller via USB,
(LD2=Yellow, LD3=Blinking Orange , LD4=Blinking Blue, LD5=OFF)
When I finish download,
(LD2=Yellow, LD3=OFF, LD4=OFF, LD5=Yellow)
When I open a serial monitor to the controller via USB,
(LD2=Yellow, LD3=Orange, LD4=OFF, LD5=Yellow)
Also, what does LmotorA & LmotorB (defined in IOpins.h) control?
Example:
To move the left motor forward:
analogWrite(LmotorA,255-LeftPWM);
analogWrite(LmotorB,255);
But to brake the left motor:
analogWrite(LmotorA,LeftPWM);
analogWrite(LmotorB,LeftPWM);
I'm confused as to what LmotorA & LmotorB actually control.
Also, what does a higher LeftPWM mean for "braking" the left motor?
Lastly, in Wild_Thumper_Controller.pde,
when I set LeftPWM to 255, the H-Bridge does not make any "noise"
but when I set LeftPWM to some other value (e.g. 254),
the H-Bridge starts to make "noise".
Is this normal?
Thanks in advance
If you go to this products page and click on the photo then you can read the labels.
LED2 indicates power (+5V)
LED3 is USB TX
LED4 is USB RX
LED5 indicates if the battery is good. This is actually connected to D13 and used by the software to change the charger between fast charge and trickle charge.
You can also download the schematic. This may help you understand the controller better.
A & B are the two inputs to the "H" bridge. When one is high and the other is low then the motor will run in one direction or the other. When both inputs are high then the motor will brake. When both inputs are low then the motor will spin freely.
By applying equal PWM to both A & B you can control the degree of braking.
The brakes are really only needed with the high speed gearbox or if your robot is heavy.
vsming wrote:Dear OddBot,
Thanks for your quick reply
I wonder how I missed out the LED labels in the product page >_<
However, there was one question that remains unanswered,
which is in Wild_Thumper_Controller.pde,
when I set LeftPWM to 255, the H-Bridge does not make any "noise"
but when I set LeftPWM to some other value (e.g. 254),
the H-Bridge starts to make "noise".
Is this normal?
Thanks in advance
First of all, in reading the piece of code you posted I realized that I had accidently sent RoboSavvy old code. If you check now you should be able to download the latest code.
As for the "singing" this is normal. When PWM is 255 or 0 then the outputs don't change. All other values cause the outputs to change state rapidly which generates an AC component. Noise suppresion capacitors on the PCB short out this AC component and "sing" due to vibration caused by the electromagnetic fields generated.
If for example you were to set LmotorA to HIGH and then play a melody using the tone command to LmotorB you can use the motors much like a speaker. Some brushless motor controllers do this intentionally to provide audio feedback when programming them.
Setting LmotorA High causes the electronic braking to come on which helps to stop your robot running away and also causes more current to flow when the back emf is shorted to increase the volume.
vsming wrote:Hello, it is me again
I would like to ask if the Wild Thumper Motor Controller's USB Port is connected to D0 and D1 ?
I am wondering if I can use both the USB Port and D0 & D1 (to control extra servos)?
Also, what is the maximum current that can be drawn from D0, D1, D2, ..., D12 ?
Thanks in advance
Yes the USB port is connected to D0 and D1 as these pins connect to the ATmega168's serial port. When the USB cable is unplugged then D0 and D1 can be used for other purposes such as interfacing with an Xbee module or accepting inputs from an RC receiver.
I do not think you will be able to use these pins for servos as the Arduino servo library states that only 12 servos can be controlled with this processor. I assume the 12 pins would be D2-D13.
If you want to control more than 7 servos then you may need to use an addition circuit such as a serial or I2C servo controller.
The I/O pins of the processor are rated at a maximum of 40mA but I do not recommend more than 20mA as the peak voltage will drop and there is a limit that each of the processors ports can handle.
The power pins associated with each I/O pin can delliver several amps of current. The 5A regulator will get quite hot if you are pushing it to the limit with a battery voltage of more than 6 or 7V. In that case a 40mm cpu fan can be fitted to the heatsink.
The intention was that the controller can easily power 7 standard servos. Some heavy duty servos are designed to work at 7.2V in which case they should be powered directly from a 7.2V battery for best results.
vsming wrote:Hello OddBot, it is me again
I just read your schematics, but I'm not sure where is "Charge On/Off".
Is "Charge On/Off" the same as D13?
Also, is there a reason why the VCC for J4 to J13 has (I assume) bypass capacitors, but J14 to J17 doesn't have?
Does it mean that the VCC for J14 to J17 is more "unstable"?
Because when I tried connecting a servo to J17, it sometimes "jerks"
whenever an Interrupt Service Routine (for I2C) kicks in,
but my servo connected to J10 doesn't "jerk".
Btw, I managed to use both D0 & D1 to control servos
Thanks in advance
Yes D13 controls the charger. If you look int the IOpins.h tab of the code you will see which pin is used for what purpose.
Traditionally D13 on Arduino boards has a LED attached. The controller maintains this tradition so that sample code such as "blinking a LED" still work for beginners. With the wild thumper controller the D13 LED also indicates that the battery voltage is good and that the charger is in trickle mode.
J14 to J17 are still using Vcc and Gnd the same as all the other pins. The schematic is just drawn in such a way as to be misleading. It is simply showing that there is a noise suppression capacitor in close proximity to those jumpers. As all the jumpers are close together there is no jumper that is more stable than another.
Your servo jerking is probably a result of your code, especially since it happens during an interrupt. Interrupts can interfer with other timing sensitive opperations such as servo control.
vsming wrote:Hello OddBot, it is me again
I just read your schematics, but I'm not sure where is "Charge On/Off".
Is "Charge On/Off" the same as D13?
Also, is there a reason why the VCC for J4 to J13 has (I assume) bypass capacitors, but J14 to J17 doesn't have?
Does it mean that the VCC for J14 to J17 is more "unstable"?
Because when I tried connecting a servo to J17, it sometimes "jerks"
whenever an Interrupt Service Routine (for I2C) kicks in,
but my servo connected to J10 doesn't "jerk".
Btw, I managed to use both D0 & D1 to control servos
Thanks in advance
nunogato wrote:vsming wrote:Hello OddBot, it is me again
I just read your schematics, but I'm not sure where is "Charge On/Off".
Is "Charge On/Off" the same as D13?
Also, is there a reason why the VCC for J4 to J13 has (I assume) bypass capacitors, but J14 to J17 doesn't have?
Does it mean that the VCC for J14 to J17 is more "unstable"?
Because when I tried connecting a servo to J17, it sometimes "jerks"
whenever an Interrupt Service Routine (for I2C) kicks in,
but my servo connected to J10 doesn't "jerk".
Btw, I managed to use both D0 & D1 to control servos
Thanks in advance
Hi vsming, don't forget that the recharge circuit cannot be used with LiPo batteries.
Yes D13 controls the charging regulator, off is actually a trickle mode, about 50mA will continue to flow keeping the battery fully charged.
You are taking the schematic diagram too literally. Vcc and Gnd go to all connectors and thus C21 and C22 are shared by the entire circuit.
These jumpers are physically in two groups "servo / digital" and "analog / communication" to try and minimize interference on the analog inputs. Each physical group has a bypass capacitor nearby to minimize noise in that part of the board, same as the old TTL circuits had a capacitor on the supply pins of every chip.
The reason your servos may twitch on some pins and not others is nothing to do with the PCB design. The I2C library must be interfering with the timer2 interrupt used by the servo library.
These sorts of problems are common on single core processors as the MCU can only do one thing at a time. When I wrote the library for the Micro Magician I had to use a dual trace oscilloscope to monitor the servo outputs. If my timer2 interrupt routine was too big it would also interfere with the servo pulses despite using a different interrupt.
This is a common problem. You need to temporarily stop your servos while I2C is in use or use a dedicated servo driver board where a separate MCU drives the servos.
It sounds like they forgot to install the sample code after the board had been tested. Now the controller is running a diagnostic program.
You can download the sample code either from Robosavvy or from the DAGU product support site here: https://sites.google.com/site/daguproducts/
Make sure you do not have anything connected to D0 and D1 when you upload the sample code as these pins are also the RX and TX pins for the Arduino compatible controller.
Power your controller from the battery with the motors temporarily disconnected while you are uploading the sample code.
Use version 0018 of the Arduino IDE when you upload the code otherwise you will need to modify the sample code and make sure you select Arduino Nano w/168 as your target board.