Ho già tentato questa via, ma purtroppo senza esito positivo...
comunque credo che il driver invertente sia il 2° perché è quello che tra i due viene comandato al contrario (se arduino aumenta il duty cycle in uscita esso si riduce e viceversa, inoltre se non c'è input sul pin in ingresso vedo sempre i 12V su quello di output)
più rifletto sul problema è più mi sembra una questione di pin flottante, ma il fatto che non rientri con una resistenza di pull-down mi lascia davvero perplesso...
colgo l'occasione di questo post per chiedere un aiuto anche relativamente ad un'altra questione:
Ho provato a googlare qualcosa in rete riguardo come modificare la frequenza del segnale PWM, ma purtroppo per il momento sono riuscito a modificare soltanto quest'ultima agendo sul prescaler utilizzando la funzione presente sul playground
Volendo però seguire le indicazioni lasciate nei post precedenti vorrei provare a comandare il motore ad una frequenza che sia il più possibile vicina a 16kHz
come potrei fare?
Al momento il mio codice contempla una semplice lettura di un potenziometro e relativo comando con analogwrite
di seguito il codice:
int mosfetdriver = 9; // mosfet driver connected to digital pin 9
int analogPin = 3; // potentiometer connected to analog pin 3
int val = 0; // variable to store the read value
void setPwmFrequency(int pin, int divisor) {
byte mode;
if(pin == 5 || pin == 6 || pin == 9 || pin == 10) {
switch(divisor) {
case 1: mode = 0x01; break;
case 8: mode = 0x02; break;
case 64: mode = 0x03; break;
case 256: mode = 0x04; break;
case 1024: mode = 0x05; break;
default: return;
}
if(pin == 5 || pin == 6) {
TCCR0B = TCCR0B & 0b11111000 | mode;
} else {
TCCR1B = TCCR1B & 0b11111000 | mode;
}
} else if(pin == 3 || pin == 11) {
switch(divisor) {
case 1: mode = 0x01; break;
case 8: mode = 0x02; break;
case 32: mode = 0x03; break;
case 64: mode = 0x04; break;
case 128: mode = 0x05; break;
case 256: mode = 0x06; break;
case 1024: mode = 0x7; break;
default: return;
}
TCCR2B = TCCR2B & 0b11111000 | mode;
}
}
void setup()
{
pinMode(mosfetdriver, OUTPUT); // sets the pin as output
setPwmFrequency(9, 64);
}
void loop()
{
val = analogRead(analogPin); // read the input pin
analogWrite(mosfetdriver, val / 4); // analogRead values go from 0 to 1023, analogWrite values from 0 to 255
Serial.println(analogPin);
delay(1000);
}
quali sono i pericoli a cui rischierei di andare incontro lavorando ad una frequenza troppo alta o troppo bassa?
grazie come sempre