Problem med mätning av pulser från halleffektswitch
Problem med mätning av pulser från halleffektswitch
Hej
Jag använder en halleffektswtich som är kopplad till en Arduino Duemilanove USB board för att mäta tiden för varje varv som en högvarvig modellmotor roterar för att sedan kunna beräkna motoreffekt och lite annat. ex första varvet tog 3000milli sekunder och nästa tog bara 2500milli sekunder.
(Arduino Duemilanove (2009) är ett Arduino-kort med integrerad USB-kommunikation och baserat på ATMega32)
Halleffektswtichen är inkopplad i det 5V uttag som finns på dataloggern och jag använder mig av en digital ingång för att mäta 1/0. Som pull-up, för att inte få några "falska" 1:or eller 0:or så använder jag mig av det inbyggda pull-up motståndet som finns i dataloggern.
Problemet jag har är att jag har kopplat dataloggern till datorn och kopplat ihop allt och kör min motor så får jag missvisande tider i datorn, ibland t o m minustider och man får en känsla av att tiderna nästan bara slumpas fram?! samtidigt så tror jag inte heller att alla pulser som genereras tas upp antingen av datorn eller av dataloggern för oavsätt vilken hastighet jag kör motorn på så får jag ändå bara ca 1000pulser/min dvs 1000rpm. Jag är inte speciellt hajj på det här och står därför här utan att fatta om det är halleffektswtichen, dataloggern eller sjävla datorn som inte hinner med?
Någon som har en idé?
Tack på förhand
Jag använder en halleffektswtich som är kopplad till en Arduino Duemilanove USB board för att mäta tiden för varje varv som en högvarvig modellmotor roterar för att sedan kunna beräkna motoreffekt och lite annat. ex första varvet tog 3000milli sekunder och nästa tog bara 2500milli sekunder.
(Arduino Duemilanove (2009) är ett Arduino-kort med integrerad USB-kommunikation och baserat på ATMega32)
Halleffektswtichen är inkopplad i det 5V uttag som finns på dataloggern och jag använder mig av en digital ingång för att mäta 1/0. Som pull-up, för att inte få några "falska" 1:or eller 0:or så använder jag mig av det inbyggda pull-up motståndet som finns i dataloggern.
Problemet jag har är att jag har kopplat dataloggern till datorn och kopplat ihop allt och kör min motor så får jag missvisande tider i datorn, ibland t o m minustider och man får en känsla av att tiderna nästan bara slumpas fram?! samtidigt så tror jag inte heller att alla pulser som genereras tas upp antingen av datorn eller av dataloggern för oavsätt vilken hastighet jag kör motorn på så får jag ändå bara ca 1000pulser/min dvs 1000rpm. Jag är inte speciellt hajj på det här och står därför här utan att fatta om det är halleffektswtichen, dataloggern eller sjävla datorn som inte hinner med?
Någon som har en idé?
Tack på förhand
-
- Inlägg: 7079
- Blev medlem: 31 augusti 2006, 16:42:43
- Ort: Jamtland
Re: Problem med mätning av pulser från halleffektswitch
Mycket lättare att svara på om typen av halleffektswitch vore känd.
Hur ser kopplingen mot hjulet ut? Hur nära ligger switchen hjulet? Ligger den på gränsen så kommer kanske bara en del pulser att registreras. Låter konstigt med minustid !
Där är väl frågan om inte uträkningen är felaktig. Att räkna pulserna är ett enkelt sätt att felsöka. Skriver du ut dom så ser du enkelt hur många pulser som räknas. Får du bara tusen hela tiden så kanske det är programfel där också. Bara gissningar om man inte vet hur programmet ser ut.
Hur ser kopplingen mot hjulet ut? Hur nära ligger switchen hjulet? Ligger den på gränsen så kommer kanske bara en del pulser att registreras. Låter konstigt med minustid !

Re: Problem med mätning av pulser från halleffektswitch
Halleffektswtichen jag använder är denna: https://www1.elfa.se/elfa3~se_sv/b2b/in ... 73-337-27;
Magneten är satt på ett specialbyggt svänghjul, och switchen sitter mycket nära, så det ska inte vara något problem vad jag tror.
Programet räknar antalet pulser och skriver sedan till datorn om det är puls nummer 230, 231 eller 240 osv som i sin tur visar det på skärmen. därför kan jag se hur många pulser som sker under en körning under t ex 1min. Jag får inte exakt 1000 men jag får runt 1000.
Programet är skrivet i arduinos egna programmeringsmiljö som är gjort för just denna dataloggern. första programet jag skriver, därför är det kanske lite rörigt:
Magneten är satt på ett specialbyggt svänghjul, och switchen sitter mycket nära, så det ska inte vara något problem vad jag tror.
Programet räknar antalet pulser och skriver sedan till datorn om det är puls nummer 230, 231 eller 240 osv som i sin tur visar det på skärmen. därför kan jag se hur många pulser som sker under en körning under t ex 1min. Jag får inte exakt 1000 men jag får runt 1000.
Programet är skrivet i arduinos egna programmeringsmiljö som är gjort för just denna dataloggern. första programet jag skriver, därför är det kanske lite rörigt:
Kod: Markera allt
const int buttonPin = 2; // the number of the pushbutton pin
const int ledPin = 13; // the number of the LED pin
// variables will change:
int buttonState = 0; // variable for reading the pushbutton status
int buttonPushCounter = 0;
int lastButtonState = 0;
long startTime = 0;
long preiousMillis = 0;
long elapsedTime = 0;
void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
Serial.begin(9600);
pinMode(buttonPin, INPUT); // set pin to input
digitalWrite(buttonPin, HIGH); // turn on pullup resistors
}
void loop(){
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
if(buttonState != lastButtonState){
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH) {
elapsedTime = micros() - startTime;
startTime = micros();
// turn LED on:
digitalWrite(ledPin, HIGH);
buttonPushCounter++;
Serial.println("on ");
Serial.print("number of button pushes: ");
Serial.println(buttonPushCounter, DEC);
Serial.print( (int) (elapsedTime));
}
else {
// turn LED off:
digitalWrite(ledPin, LOW);
Serial.println("off");
}
}
lastButtonState = buttonState;
}
-
- EF Sponsor
- Inlägg: 544
- Blev medlem: 8 december 2006, 11:18:14
- Ort: Tågarp, Svalöv
Re: Problem med mätning av pulser från halleffektswitch
Jag är inte insatt i Arduino, men använder du någon arduino-rutin för pushbutton som input för givaren?
//A
//A
Re: Problem med mätning av pulser från halleffektswitch
Eftersom detta är första gången jag programerar så använde jag mig rätt mycket av kod som är skriven i olika exempel. Ja det är det jag använder, men trycker man på en knapp så får man en 1:a och det är ju samma sak här, att när en sydpol passerar får jag en 1:a (=knappen är intryckt) tills nordpolen passerar (=knappen släpps)
eller tänker jag fel?
eller tänker jag fel?
-
- EF Sponsor
- Inlägg: 544
- Blev medlem: 8 december 2006, 11:18:14
- Ort: Tågarp, Svalöv
Re: Problem med mätning av pulser från halleffektswitch
Förvisso, men just pushbutton i godtycklig programmeringsmiljö brukar har debounce. Du skall snarare rikta in dig på räknare/counter.
//A
//A
Re: Problem med mätning av pulser från halleffektswitch
Så du tror alltså att det är sjävla programet som inte klarar av den höga frekvensen och korta tiderna?
-
- EF Sponsor
- Inlägg: 544
- Blev medlem: 8 december 2006, 11:18:14
- Ort: Tågarp, Svalöv
Re: Problem med mätning av pulser från halleffektswitch
kan iof vara möjligt eftersom den funkar fint vid lägre frekvenser, dock tycker jag inte att tiden skulle bli fel även fast den missar vissa pulser? det borde ju fortfarande leverera en positiv tid mellan 2 pulser och inte en negativ som jag får ganska ofta?
- prototypen
- Inlägg: 11105
- Blev medlem: 6 augusti 2006, 13:25:04
- Ort: umeå
Re: Problem med mätning av pulser från halleffektswitch
Vad är det för värde på pullup motståndet, i databladet står det 820Ω för att få max 2 µs stig och falltid (det ger 250 kHz svitchfreknens).
Det är nog inte Hallswitchen som är fel på utan titta på Pullup motståndet (egentligen ska du titta på kurvformen med oscilloskop)
Och som barbarossa skrev, ingen debounce/avstudsning, det har man bara på mekaniska trycknappar, hallgivaren är studsfri.
Protte
Det är nog inte Hallswitchen som är fel på utan titta på Pullup motståndet (egentligen ska du titta på kurvformen med oscilloskop)
Och som barbarossa skrev, ingen debounce/avstudsning, det har man bara på mekaniska trycknappar, hallgivaren är studsfri.
Protte
-
- EF Sponsor
- Inlägg: 544
- Blev medlem: 8 december 2006, 11:18:14
- Ort: Tågarp, Svalöv
Re: Problem med mätning av pulser från halleffektswitch
var nollar du "buttonPushCounter" ?
hur ofta skriver du till seriellporten?
hur ofta skriver du till seriellporten?
Re: Problem med mätning av pulser från halleffektswitch
nu börjar det bli lite avancerat, hehe. Innebär det att jag ska köpa ett 820ohms pull-up resistor tycker du, och sedan sätta den mellan avläsningspinnen och GND?Vad är det för värde på pullup motståndet, i databladet står det 820Ω för att få max 2 µs stig och falltid (det ger 250 kHz svitchfreknens).
buttonPushCountern fungerar så att den hela tiden frågar efter en 1:a, sedan när den blir noll (dvs när nordpolen passerar) så blir det automatiskt en 0:a
jag skriver till porten varje gång som en förändring i tillstånd har skett.
- prototypen
- Inlägg: 11105
- Blev medlem: 6 augusti 2006, 13:25:04
- Ort: umeå
Re: Problem med mätning av pulser från halleffektswitch
Det är omöjligt att säga om det ska vara 820 Ω, men det ser man på oscilloskopet. Sitter det 10kΩ så kan man börja misstänka att signalen inte hinner upp mellan pulserna.
Till vilken port skriver du? är det till USB:n. Att skriva var 6:e ms kan ju vara stressande för vilket icke realtids OS som helst, eller gör du behandling i Atmegan?
Protte
Till vilken port skriver du? är det till USB:n. Att skriva var 6:e ms kan ju vara stressande för vilket icke realtids OS som helst, eller gör du behandling i Atmegan?
Protte
Re: Problem med mätning av pulser från halleffektswitch
Det inbyggda är på 20k Ohm. ska jag satsa på att skriva om programet och använda ett lägre pull-up?
Jag skriver till USB, och jag skickar allt dirket från loggern till datorn som sedan får utföra beräkningar på dessa data.
Jag skriver till USB, och jag skickar allt dirket från loggern till datorn som sedan får utföra beräkningar på dessa data.
-
- EF Sponsor
- Inlägg: 544
- Blev medlem: 8 december 2006, 11:18:14
- Ort: Tågarp, Svalöv
Re: Problem med mätning av pulser från halleffektswitch
"...och sedan sätta den mellan avläsningspinnen och GND?..."
Gissa igen.
"...jag skriver till porten varje gång som en förändring i tillstånd har skett..."
med en motor på, säg, 30000 varv i minuten blir det 500 ggr/sekund. Vad gör du i datorn som behöver så många datapunkter?
Gissa igen.
"...jag skriver till porten varje gång som en förändring i tillstånd har skett..."
med en motor på, säg, 30000 varv i minuten blir det 500 ggr/sekund. Vad gör du i datorn som behöver så många datapunkter?