|
Finalmente sono riuscito ad utilizzare un TLC5940 come driver di servomotori, purtroppo avendone soltanto uno funzionante e a rotazione continua non ho avuto modo di testare il corretto funzionamento di tutto, ma dubito che aumentando il numero di servo i problemi aumentino.
L'accorgimento fondamentale da utilizzare con un numero maggiore di servomotori è avere un'alimentazione separata tra servo e arduino. I servo per modellismo lavorano con tensioni che vanno da 4.5v a 6v e introducono sulla linea di alimentazione dei disturbi che potrebbero provocare un mal funzionamento del nostro microcontrollore o della nostra board arduino. Quindi consiglio vivamente a coloro che avranno intenzione di utilizzare più servo di usare un alimentatore stabilizzato da 4.5v a 6v o una lipo con un opportuno abbassatore di tensione per alimentare SOLO i servo.
Per questa esperienza vi servirà la libreria TLC5940.
Lo schema che ho seguito è questo:

Il codice da me utilizzato è questo:
/*
This sketch sweeps a servo on channel 0.
To connect a servo:
1. Put a 2k-5k pull-up resistor (R0 below; I've tried with 3.3k) between the
servo control output pin and +5v.
2. Connect that same pin to the servo's control line like so
servo data pin
| _____
OUTn ----+----[_____]---+5v
R0
Steve Pomeroy , 2009-01-20 */
#include "Tlc5940.h"
#include "tlc_servos.h"
#define SERVO_CHANNEL 0
#define DELAY_TIME 2000
void setup()
{
tlc_initServos(); // Note: this will drop the PWM freqency down to 50Hz.
}
void loop()
{
tlc_setServo(SERVO_CHANNEL, 0);
Tlc.update();
delay(DELAY_TIME);
tlc_setServo(SERVO_CHANNEL, 90);
Tlc.update();
delay(DELAY_TIME);
tlc_setServo(SERVO_CHANNEL, 180);
Tlc.update();
delay(DELAY_TIME);
}