Forum Replies Created
- AuthorPosts
- TomekParticipant
After some trials it seems, that I cannot run 4 N20 motors using only one TB6612FNG. After some reading I know I need four. Unfortunatelly I need to use SMD ones because lack of space. The electrical diagram looks like this:
I wonder if I can reduce number of capacitors. They should be as close as possible to the TB6612FNG, but what does that mean? Do anybody have an experience with that?TomekParticipantTomekParticipantThere are a lot of tutorials on youtube about soldering. This is not very difficult.
TomekParticipantI was thinking about that as well, but if you look at that board there is no place. Maybe after changing transistors to SMD ones, but those are really small ones.
TomekParticipantI have 4 LED inside.
The difference is in the code, but I need do design circuit board to be installed in the roof. Also I want to use PCF8574 to reduce number of wires to 4 between arduino and the roof. For that I need more or less such a board:
I can probably remove 2 transistors and 4 resistors because for the lights I have now four (front left, front right and same for the rear lights).
For version 1 I can connect all the beacon LED into one transistor so in such case I need only three transistors in the roof.TomekParticipantI am not sure if this question is related to that topic or not. Please specify, printscreen would be helpful.
TomekParticipantThat little orange cap is a drilled and polished LED 5mm.
If you have problem with shaking hands during soldering I have only one solution. You can buy that solution usually in half liter or one liter volume bottles. Dosing is individual thing, so some trials are necessary.
Anyway this is what I have done and in my opinion ver3 is the best one.ver1
ver2
ver3
TomekParticipantI have one suggestion. It is possible to log in only using the main page. Sometimes it is annoying.
TomekParticipantOk, so as soon as topic with John Deere 9560 will be transferred I will update it a little bit.
TomekParticipantI am thinking about Hitec HS-5085MG but it is quite expensive, so maybe I will look for something else. I am using 3v 50RPM motors.
TomekParticipantI think it is a little bit too low. It is ok for a fieldwork, but for a transport it is slow. Also servo has not enough power when it is connected to 3,3 or even 5V power supply. I need to buy 6V power supply and check how the servo will work with that and control signal from arduino 3,3V. If it will be ok, I will change motors to 6V 100RPM.
TomekParticipantTomekParticipantMy happiness came too early. There is no delay now, but one digital output to motor driver is blinking, and I have no idea why.
I want to add all the lights and servo for rear attacher. Most likely it will take next half a year.TomekParticipantI have finally found the problem. Instead of this:
while (Serial.available()) { inputString=Serial.readString(); dat1=inputString[0]; dat2=inputString[1]; data_val=inputString[2]; }
I have now this:
while(Serial.available() > 0) { char inChar = Serial.read(); if(inChar == SOP) { index = 0; inData[index] = '\0'; started = true; ended = false; } else if(index == 3) { ended = true; break; } else { if(index < 79) { inData[index] = inChar; index++; inData[index] = '\0'; } } } // We are here either because all pending serial // data has been read OR because an end of // packet marker arrived. Which is it? if(started && ended) { // The end of packet marker arrived. Process the packet // Reset for the next packet started = false; ended = false; index = 0; inData[index] = '\0'; } data_val=inData[1];
So I look for begining of the packet starting with char 9 length 3 chars and it is working well and fast. Also baudrate 9600 is enough.
TomekParticipantAfter connecting xbee to the computer I was able to speed up sending up to one time per 50 cycles and serial data monitor was displaying correct packets. Probably it is possible to do that faster, but no need to. Transmitter is working correctly,
I have replaced XBees with wires and it was working in the same way. This is not a XBee issue
I have modified code a lot to make it simpler:void setup() { // initialize serial: Serial.begin(115200); inputString.reserve(3); pinMode(13, OUTPUT); pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(11, OUTPUT); pinMode(15, OUTPUT); } void loop() { servo_val = map(data_val, 0x00, 0xFF, drive_min, drive_max); // scale the data value for use with the motor servo_val2=servo_val; if (servo_val2 > idle_high){ move2=map(servo_val2,128,255,100,255); digitalWrite(motorcon2, LOW); // Set the direction with pins 7 and 8 digitalWrite(motorcon1, HIGH); } else { // If within the buffer turn off the motor move2=100; digitalWrite(motorcon2, LOW); // Set the direction with pins 7 and 8 digitalWrite(motorcon1, LOW); } while (Serial.available()) { inputString=Serial.readString(); dat1=inputString[0]; dat2=inputString[1]; data_val=inputString[2]; } }
There was no change after that either.
I think the issue is related to serial buffer overflow, difference between speed of Leonardo and ProMini 3,3V or I need to change the way I read serial data to look for beginning of the packet.
- AuthorPosts