Citazione:
Originalmente inviato da aero330 Un paio di cose:
1) il comando "if(val>=0) " puoi anche levarlo tanto qualsiasi numero che viene salvato nella variabile "val" è per forza >=0 avendo dichiarato la variabile val un intero (rappresentabile da 0 a 255)
2) il codice è giusto ma non funzionerà a dovere con l'ESC
Premessa:
Il regolatore, viene pilotato con segnali aventi frequenza 50Hz, (periodo 20ms )con "impulsi" di lunghezza compresi tra 1ms e 2 ms che stabiliscono in qualche modo (per farla breve) la velocità del tuo motore.
Ora con il comando AnalogWrite, tu generi si un segnale PWM ma ad una frequenza che non può essere cambiata che di default è 490 Hz. In sostanza è come se tu parlassi italiano a un cinese: nessuna comprensione. Secondo me l'errore che fai è proprio qua anche se mi sembra strano che comunque la ventola giri lo stesso fermandosi poi.
Ripeto: parti usando gli esempi che utilizzano la libreria Servo in cui le temporizzazioni sono settate correttamente.
AnalogWrite andrebbe bene per generare un segnale PWM altrimenti che comando useresti? DigitalWrite? Se fosse così dovresti tenere conto anche delle temporizzazioni giuste, duty cicle ecc ecc...con la "servo library" si farebbe prima. |
il problema è la frequenza del PWM di analogwrite, l'unico modo con arduino per generare un segnale PWM utilizzabile da un servo è la servo library o un interrupt (la mia scelta preferita)
Inoltre se uno con l'oscilloscopio guardasse il tipo di PWM generato da analogwrite, si accorgerebbe che non è costituito da un singolo impulso di larghezza variabile....
Ma nell'era di internet e del "l'ho visto su youtube", l'oscilloscopio chi lo usa più ???