Arduino Ohmmeter (2 / 2 steg)
Steg 2: Del 3
Del 3 [färdiga produkten med Program]
(Bifogat finns txt-fil om hur det fungerar och programmet)
Jag vet att detta projekt har några weakiness ännu vara upptäckt själv eller troligare andra. Men för det mesta den visar hur spänning och motstånd mätning kan ske med en Wheatstone Bridge. Gör det möjligt för andra sensorer för att fungera som en töjningsmätaren, ljus känslig diod, temperaturgivare och mycket mer.
För programvaran används mestadels Hyperterm och VT100J emulering.
Men med Putty översättning (CP866 manuellt skriva in) med teckensnitt baserat OEM och ANSI.
Någon villig att erbjuda några * konstruktiva * kritik att göra banan mer exakt är välkommen.
Bifogat är skissen för mikroprocessorn på uno ombord: här är själva koden:
börja kopiera hit
#define A0IN 0
#define A1IN 1
int analogamount = 0; används för att konvertera spänning vänster bridge
int analogamount1 = 0; används för att konvertera spänning rätt bro
flyta spänning = 0; vänstra bridge spänning
flyta voltage1 = 0; rätt bridge spänning
flyta voltage2 = 0; används för spänning korrigering
flyta svar = 0;
int cv = 0; variabel används skärmen ritning
void setup() {
analogReference(EXTERNAL); använda AREF för referensspänningen
Serial.BEGIN(9600);
set_screen();
}
void loop() {
analogamount = analogRead(A0IN);
analogamount1 = analogRead(A1IN);
spänning = analogamount * (4500 / 1024.00);
voltage1 = analogamount1 * (4500 / 1024.00);
voltage2 = 0;
set_xy(23,1);
save_cursor_pos();
IF(Voltage == voltage1) {
set_xy(10,25);
repeat_char(10,0x20);
set_xy(10,47);
repeat_char(10,0x20);
set_xy(14,49);
repeat_char(10,0x20);
} annat {
set_xy(10,25);
spänning = round(voltage);
spänning = spänning *. 001;
Serial.Print(Voltage);
om (spänning < 1) {Serial.print("mV");} annat {Serial.print ("V");
}
set_xy(10,47);
voltage1 = voltage1 *. 001;
Serial.Print(voltage1);
om (voltage1 < 1) {Serial.print("mV");} annat {Serial.print ("V");
}
set_xy(14,49);
voltage2 = spänning * 2;
svar = 10000 * voltage1 / (voltage2 - voltage1); svar = round(answer);
Serial.Print ((int) svar + 1);
Serial.Print ("ohm");
}
restore_cursor_pos();
Delay(3000);
}
void save_cursor_pos() {
Serial.Print ("\x1B" "[s"); / / spara markörposition
}
void restore_cursor_pos() {
Serial.Print ("\x1B" "[u"); / / restore markörens position
}
void repeat_char (int r, char c) {
int rx;
för (rx = 0; rx! = r; rx ++) {
Serial.Print(c);
}
}
void set_xy (int x, int y) {
Serial.Print("\x1B[");
Serial.Print(x);
Serial.Print(";");
Serial.Print(y);
Serial.Print("H");
}
void set_screen() {
Serial.Print ("\x1B" "[2J");
set_xy(1,2);
Serial.Print("ohmmeter");
set_xy(3,2);
Serial.Print("\xDA");
repeat_char(20,0xc4);
Serial.Print("\xC2");
repeat_char(20,0xc4);
Serial.Print("\xBF");
set_xy(4,2);
för (cv = 0; cv! = 2; cv ++) {
Serial.Print("\xB3");
repeat_char(20,0x20);
Serial.Print("\xB3");
repeat_char(20,0x20);
Serial.println("\xB3");
Serial.Print("");
}
set_xy(6,2);
för (cv = 0; cv! = 3; cv ++) {
Serial.Print("\xB3");
repeat_char(20,0x20);
Serial.Print("\xB2");
repeat_char(20,0x20);
Serial.println("\xB2");
Serial.Print("");
}
set_xy(7,25);
Serial.Print ("R1 (10K)");
set_xy(9,1);
Serial.Print("\xC4\xC1\xC4");
repeat_char(19,0x20);
Serial.Print("\xB3");
repeat_char(20,0x20);
Serial.Print("\xB3");
set_xy(10,1);
Serial.Print ("\x1B [10, 1 H" "\xC4");
repeat_char(19,0x20);
Serial.Print("\xB3");
repeat_char(20,0x20);
Serial.Print("\xB3");
set_xy(11,1);
Serial.Print("\xC4\xC4\xC4");
repeat_char(19,0x20);
Serial.Print("\xB3");
repeat_char(20,0x20);
Serial.Print("\xB3");
set_xy(12,2);
Serial.Print ("\xC2");
repeat_char(19,0x20);
Serial.Print("\xB3");
repeat_char(20,0x20);
Serial.Print("\xB3");
set_xy(13,2);
för (cv = 0; cv! = 3; cv ++) {
Serial.Print("\xB3");
repeat_char(20,0x20);
Serial.Print("\xB2");
repeat_char(20,0x20);
Serial.println("\xB2");
Serial.Print("");
}
set_xy(16,2);
för (cv = 0; cv! = 3; cv ++) {
Serial.Print("\xB3");
repeat_char(20,0x20);
Serial.Print("\xB3");
repeat_char(20,0x20);
Serial.println("\xB3");
Serial.Print("");
}
set_xy(18,2);
Serial.Print("\xC0");
repeat_char(20,0xc4);
Serial.Print("\xC1");
repeat_char(20,0xc4);
Serial.Print("\xD9");
set_xy(7,46);
Serial.Print ("R2 (10K)");
set_xy(14,25);
Serial.Print ("R3 (10K)");
set_xy(14,46);
Serial.Print("RX");
} / / end exemplar här