Med en ACS712 och Arduino för att upptäcka manöverdonet gränser (3 / 6 steg)
Steg 3: Testa ACS712
Den motoriska sköld som jag använder isolerar kraften för motorn från Arduino. Det är en bra sak eftersom motorer gör en massa oväsen, men det innebär att du kommer att behöva driva Arduino separat. Du kan eventuellt driva Arduino bort av den samma 12Vin och lägga till en diod och kondensator. För detta exempel, låt oss bara power Arduino från USB.
- 12V strömförsörjning ska vara avstängd
- Gå vidare och plugg i din USB från Arduino till datorn
- Ladda upp den kod som följer instruktioner
- Öppna en seriell övervaka (verktyg / seriell övervaka från Arduino IDE)
Om allt fungerar, bör du se mätvärden mellan 500-520. Detta är rätt. På grund av det sätt ACS712 fungerar är att spänningen ut produceras är 1/2 av VCC när inget elektromagnetiska fält är närvarande, bör du se 1/2 av 1024 eller om 512.
Eftersom denna sensor fungerar på principen om hall effekt , det kan variera, bör du se en förändring om du passerar en magnet nära sensorn. Kul grejer!
/*
analogRead - läser en analog pin N gånger per sekund över N period och
skriver min och max till konsolen
*/
#include
#define ANALOG_PIN A5
#define SAMPLE_INTERVAL 10 / / varje 10ms
#define SAMPLE_PERIOD 1000 / / 1 SEK
Rutinen installationsprogrammet körs en gång när du trycker på reset:
void setup() {
initiera seriell kommunikation på 9600 bitar per sekund:
Serial.BEGIN(9600);
pinMode (ANALOG_PIN, indata);
}
loop rutinen körs för evigt om och om igen:
void loop() {
int min = 0xff;
int max = 0;
för (int jag = 0; jag < SAMPLE_PERIOD / SAMPLE_INTERVAL; jag ++) {
int sensorValue = analogRead(ANALOG_PIN);
om (min == 0xff || sensorValue < min) min = sensorValue;
om (sensorValue > max) max = sensorValue;
Delay(SAMPLE_INTERVAL);
}
char ut [255];
sprintf (ut, "min = %d max = %d", min, max);
Serial.println(out);
}