CONTAGIRI DIGITALE PER MOTORI DI LAVATRICE - 4



ITALIANO   ENGLISH    ESPAÑOL

Contagiri Amp_mode - IMPLEMENTAZIONE SOFTWARE

Ecco lo skecth per Arduino Nano per realizzare il contagiri digitale in amp_mode. Alcune costanti del programma fanno riferimento alle caratteristiche del motore e al circuito di condizionamento.che dovranno essere inserite nel codice al fine di avere una stima più accurata possibile dei giri in funzione del motore usato.

I parametri da inserire sono:

  1. RPM_max = Numero massimo giri da recuperare dai dati di targa del motore;

  2. VDC_max = tensione massima all'ingresso del partitore;

  3.  I valori dei resistori R1 e R2 per determinare il fattore di partizione p.

Il display visualizzerà nella prima rifa il valore degli RPM stimati mentre nella seconda riga visualizzerà in sequenza la Tensione VAC  ( uscirà del sensore) VDC (tensione ingresso partitore) e VIN ( tensione ingresso Arduino). Queste  tensioni possono essere escluse dalla visualizzazione commentando le relative righe.

/*PROGRAMMA DIG_RMP MODALITA' AMPIEZZA ( AMP_MODE)
 Versione 1.0 del 27/07/2020
 AUTORE: MICROST
 
 Misura dei giri motore di una lavatrice misurando l'ampiezza del segnael in uscita al sensore tachimetrico
 Lo schema di riferimento e' vsionabile al seguente link:  https://www.microst.it/Progetti/dig_rpm_3.htm
 Nella prima riga del display e' visualizzato il valore degli RPM  mentre nella seconda riga
 in sequenza VIN, VDC, VAC ( vedi schema per il significtao delle sigle).
 
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

const byte ADDRESS = 0x27;          // indirizzo di base per interfaccia I2c
const long RPM_max = 13000;         //numero di giri massimi ( vedi targa motore)
const long VDC_max = 41.2;         // tensione uscita ingresso partitore per RPM_MAX
const long R1 = 72000, R2 = 10000;  // resitori nel partitore resistivo 1000*(1+R1/R2)
const long p = (1+R1/R2);
const long Krpm = p*RPM_max/VDC_max;
long meas=0, rpm=0, Vin, VAC, VDC;

LiquidCrystal_I2C lcd(0x27, 16, 2);
;
void setup() {

// Set pin functions & enable internal pull-up resistors

// Initialize LCD
 Wire.begin ();                // attiva la routine della comunicazione I2C
 lcd.begin(16, 2);             // attiva la routine della display I2C
 lcd.backlight();              // accende la luce di backligth
 lcd.clear();                  // pulisce il display
 lcd.setCursor (0,0);          // sposta il cursore nella posizione  ( C=0, R=0)
 lcd.print("    CONTAGIRI    ");    // scrive la stringa sul display
 lcd.setCursor (1,1);          // sposta il cursore nella posizione ( C=1, R=1)
 lcd.print("   DIGITALE    ");       // scrive la stringa sul display
 delay (2000);                 // aspetta un tempodi 1000ms = 1s
 lcd.clear();                  // pulisce il display
 lcd.setCursor (0,0);          // sposta il cursore nella posizione  ( C=0, R=0)
 lcd.print("    MICROST");    // scrive la stringa sul display
 lcd.setCursor (1,1);          // sposta il cursore nella posizione ( C=1, R=1)
 lcd.print("www.microst.it");       // scrive la stringa sul display
 delay (1000);                 // aspetta un tempodi 1000ms = 1s
 lcd.clear();                  // pulisce il display

 
}

// Acquisisce il valore di tensione dal pin A0 per 500 volte prendendone il massimo ( variabile Vin_max)
// e valuta il valore dei RPM = RPM_max* Vin_max /1023
void loop() {
Vin=0;
for (int i=0; i<500; i++) {
 meas= analogRead(A0);
 if (meas > Vin) { Vin = meas;}  //  prende il valore massimo dell'ampiezza di Vin
}
delay(500); // questo valore può essere cambiato per cambiare la frequenza della misura
if ( Vin >=4) {rpm= Krpm* Vin *5 /1023;} else rpm=0;  // filtra il rumore per bassissimo valore di VIN= 4/1023*5=20mV
lcd.setCursor (0,0);
lcd.print("RPM = ");
lcd.print(rpm);
lcd.print("   ");
// se non vuoi visualizzre la seconda riga commenta con // le righe seguenti fino al commento fine seconda riga
lcd.setCursor (0,1);
lcd.print(Vin * 5.00 /1023);    // visualizza il valore stimato della tensione VIN all'ingresso del ADC
VDC=p*(Vin * 5.00 /1023);
lcd.setCursor (5,1);
lcd.print(p*(Vin * 5.00 /1023));
lcd.setCursor (11,1);
lcd.print((VDC+1.2)/1.414);         // visualizza il valore efficace stimato della tensione VAC sul sensore
// fine seconda riga//

}

VIDEO /FOTO

Video della prova a banco del contagiri AMP_MODE per un motore MCA3064 regolato tramite MST_K07_CL

Di seguito alcune foto della implementazione del circuito del contagiri AMP_MODE:


bancodi prova

Banco di prova con il MST_K07_CL del contagiri amp_mode