[Risolto]VNH5019 dubbi e PWM

Salve a tutti , avevo alcuni dubbi su questo driver motori della pololu Pololu - VNH5019 Motor Driver Carrier

Nella descrizione dice che supporta un PWM ultrasonico , solo questo :quanto bisogna complicarsi la vita per portare il pwm di arduino di 500hz di frequenza a un pwm con frequenza ultrasonica ? quali sono i miglioramenti che avrei ? e creando una frequenza di pwm ultrasonica eviterei quel fastidioso suono simile ad un iiiiiiiiiiiiii.. che sento quando i motori sono in movimento ?

Altra cosa , non mi è chiara questa parte

Current sense output proportional to motor current (approx. 140 mV/A)

So che sul piedino Current sense dovrei mettere una resistenza collegata a massa e che prima della resistenza dovrei prelevare un segnale analogico di arduino , ma quella parte in che modo mi aiuta dovendo scegliere la giusta resistenza ?

Grazie a tutti come al solito dell'aiuto

Uno dei problemi dei driver PWM è che sono "rumorosi", cioè se la frequenza di funzionamento è inferiore a 20kHz (ad esempio 3kHz) è possibile sentire un "fischio" fastidioso.

Cambiare le frequenza del PWM di Arduino non è difficile, basta conoscere il timer utilizzato (cioè il pin che viene utilizzato) e modificare il registro TCCRxB in modo da usare un divisore diverso da quello di default (64).

Ad esempio, usando il pin 11 corrispondente alla porta OC2A del Timer2 si otterrebbe una frequenza di 490Hz, ma è possibile passare a 31373Hz semplicemente usando il divisore 1 con l'istruzione:

TCCR2B = TCCR2B & 0xF8 | 0x01;

Con questo metodo puoi ottenere (sempre per il timer2) anche 980Hz (divisore 32 = 0x03) oppure 3922Hz (divisore 8 = 0x02).

Purtroppo la frequenza 31373Hz è troppo alta per il driver della POLOLU (max 20000Hz)

Capisco , ho anche dato un occhiata alla pagina di Mauro Alfieri Frequenza PWM su Arduino Duty Cycle Mauro Alfieri Elettronica Robotica

dove dice che i valori di prescaler , che sono i dividendo della frequenza base hanno valori fissi 1,8,64,256,1024, ma non mi permettono di avvicinarmi agli ultrasuoni senza superare la frequenza di funzionamento dei driver , quindi pensavo , usando 1024 come prescaler dovrei avere una frequenza di pwm di circa 30hz , quasi inaudibile ;

Detto ciò quali potrebbero essere i problemi annessi all' uso di una frequenza di pwm così bassa su dei motori ?

Dipende dal campo di utilizzo.

Ad esempio nel caso di convertitori DC/DC, una frequenza PWM alta corrisponde ad una maggiore efficienza, un risposta più veloce ed un induttore e condensatori più piccoli.

Nel caso di motori, a parte la questione rumorosità, con una frequenza simile a quella della rete elettrica (50-200 Hz) non dovresti avere grossi problemi, visto le inerzie meccaniche in gioco, ma non ho esperienze dirette in merito.

Comunque, con Arduino pilotando direttamente i registri OCRxA e OCRxB nelle modalità OCRxA top puoi anche ottenere frequenze diverse.

Per calcolare i valori puoi usare Arduino Companion (by LEO72 e gpb01)

Altrimenti potrei aggiungere una rete esterna che mi moltiplichi per 40 la frequenza di pwm lasciando invariato il duty cycle.
è possibile farlo ?

Scusate se riuppo ma ho capito tutto tranne il parametro che mi dovrebbe dare l'indicazione su quale resistenza scegliere per il piedino CS del driver motore (quello che mi fa capire se il motore sta sforzando)

Current sense output proportional to motor current (approx. 140 mV/A)

A quanto ho letto, il pin CS che ha già una resistenza limitatrice interna da 10k, può essere connesso direttamente ad un ingresso analogico di Ardino.

Per ogni ampere assorbito dal motore fornisce un incremento di tensione di 140mV.

come farei senza di te ?
Ti ringrazio ancora ottima notizia .