Seit mir meine Enkel einen Arduino uno und einige Sensoren (+ Zubehör) geschenkt hat ,lässt mich der “kleine” nicht mehr los. Zur Zeit beschäftige ich mich mit einem Teslameter der Magnete im Tesla Bereich messen kann,der Aufbau war recht schnell gemacht,doch mit dem Code habe ich noch so meine Probleme
Ich versuche einen Hallsensor abzufragen aber verstehe nicht genau wie ich das machen muss!
der Sensor hat Max. Sensitivität: 1.8-2.5 (mV/mT), Messbereich: 3T
Was ich nicht versteh ist was ich einstellen wo ändern muss!
Hier mein Code:
#include <Wire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
float somma = 0;
float media = 0;
float gauss = 0;
float millitesla = 0;
int i = 0;
float reset = 0;
float correzione = 0;
float gauss_ofset = 0;
void setup() {
lcd.begin(16, 2);
lcd.setCursor (0, 0);
lcd.print (" GAUSSMETER") ;
lcd.setCursor (0, 1);
lcd.print ("Erstellt 13/03/17") ;
delay (500);
lcd.clear();
somma = 0;
float voltage = 0;
media = 0;
i = 0;
correzione = 0;
gauss_ofset = 0;
for (i = 0; i < 50; i++)
{
int sensorValue = analogRead(A0);
float voltage = ((sensorValue * (5.0 / 1023.0)) - 0 ;
somma = somma + voltage;
lcd.setCursor (0, 0);
lcd.print ("Anzahl ");
delay (100);
lcd.setCursor (0, 1);
lcd.print (i) ;
}
delay (100);
lcd.setCursor (0, 1);
lcd.print ("AUTORESET DONE") ;
delay (1000);
media = (somma / 50);
gauss = (((5000 * ((media - 2.3) / 0.018)))) ;
correzione = gauss;
}
void loop()
{
somma = 0;
float voltage = 0;
media = 0;
i = 0;
gauss = 0;
for (i = 0; i < 50; i++)
{
int sensorValue = analogRead(A0);
float voltage = ((sensorValue * (5.0 / 1023.0)) * 1) - 0 ;
somma = somma + voltage;
delay(10);
}
media = (somma / 50);
gauss = (((5000 * ((media - 2.3) / 0.018)))) ;
gauss_ofset = gauss - correzione ;
millitesla = (gauss_ofset * 0.0001);
lcd.clear();
lcd.setCursor (0, 0);
lcd.print ("GAUSS= ");
lcd.setCursor (0, 1);
lcd.print ("TESLA= ");
delay(10);
lcd.setCursor (8, 0);
lcd.print(gauss_ofset, 2);
lcd.setCursor (8, 1);
lcd.print (millitesla, 2);
}
Also wenn ich einen Magneten Messe der laut Händler einen Tesla Wert von 1.32...1.38 hat,zeigt mir das Teil manchmal 1,1 manchmal 3,4 usw Nord + Süd - macht er aber Problemlos. Ich habe nicht verstanden ob das richtig ist :
gauss = (((5000 * ((media - 2.3) / 0.018)))) ;
Die 5000 sind klar 1T = 10.000 Gauss ,aber der letzte Wert ist der in Volt ?? 1,8 mV = 0.018 Volt??
Die 2,3 sind die Spannung die angezeigt wird (kleinster Wert) der Angezeigt wird wenn kein Magnet davor ist !!
Soll das heißen: 2,3V ohne Magnet, also nur mit dem Magnetfeld der Erde? Dann müsste dieser Wert doch lageabhängig entsprechend der Ausrichtung zum Erdmagnetfeld sein?
Die 2,3V kommen mir etwas hoch vor. Zur Formel kann ich nichts sagen, da musst Du den fragen, von dem Du sie hast.
So gemessen 1,35 Tesla das dürfte stimmen!! nur die Anzeige springt immer noch ...hoch runter
Tommy56:
Soll das heißen: 2,3V ohne Magnet, also nur mit dem Magnetfeld der Erde? Dann müsste dieser Wert doch lageabhängig entsprechend der Ausrichtung zum Erdmagnetfeld sein?
Die 2,3V kommen mir etwas hoch vor. Zur Formel kann ich nichts sagen, da musst Du den fragen, von dem Du sie hast.
Gruß Tommy
Ich versuche das Morgen einmal,was sollte deiner Meinung nach den Angezeigt werden?
Zur Software,das ist eine Freie von einer italienischen Webseite . Ich werde einfach noch etwas testen.
Tommy56:
Soll das heißen: 2,3V ohne Magnet, also nur mit dem Magnetfeld der Erde? Dann müsste dieser Wert doch lageabhängig entsprechend der Ausrichtung zum Erdmagnetfeld sein?
Die 2,3V kommen mir etwas hoch vor. Zur Formel kann ich nichts sagen, da musst Du den fragen, von dem Du sie hast.
Gruß Tommy
Das Erdmagnetfeld ist zu schwach um mit dem Sensor gemessen zu werden.
Erdmagnetfeld – Wikipedia
Am Äquator hat das Magnetfeld eine Stärke von ca. 30 µT = 30.000 nT. An den Polen ist der Betrag doppelt so groß. In Mitteleuropa sind es ca. 48 µT, wobei ca. 20 µT in der horizontalen und ca. 44 µT in der vertikalen Richtung auftreten.
So,Kontaktproblemen .JA das verwendete Board und die Kabel sind auf Deutsch für den A.....!
Ich habe mit erst einmal ein Laborsteckbrett und Kabel bestellt! Wenn beides da ist geht es weiter!
Es kommt 0 raus und das ist ein beliebter Fehler, da die rechte Seite als int von links nach rechts gerechnet wird.
5 / 10 = 0 --> 0 * 100 = 0
Anders sieht das aus wenn Du rechnest:
float x = 5 .0/ 10 * 100
Dann wird die rechte Seite gleich als float gerechnet.
Warum habe ich diese Rechnung hier rein gebracht?
Im Original war es:
float voltage = (sensorValue * 5.0 / 1023.0) und dabei wird die rechte Seite in float gerechnet.
Dasraus hast Du sorglos
float voltage = ((10 * 6) / 3) gemacht, das in in gerechnet wird und Deine Antwort hat gezeigt, dass Du den Unterschied nicht kanntest.
Darauf wollte ich hinweisen. das 5.0 im Original hatte schon seinen Sinn.