Problem med mätning av pulser från halleffektswitch

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Johan123
Inlägg: 25
Blev medlem: 19 juli 2009, 14:00:42

Problem med mätning av pulser från halleffektswitch

Inlägg av Johan123 »

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
Mindmapper
Inlägg: 7079
Blev medlem: 31 augusti 2006, 16:42:43
Ort: Jamtland

Re: Problem med mätning av pulser från halleffektswitch

Inlägg av Mindmapper »

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 ! :doh: 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.
Johan123
Inlägg: 25
Blev medlem: 19 juli 2009, 14:00:42

Re: Problem med mätning av pulser från halleffektswitch

Inlägg av Johan123 »

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:

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;
}
barbarossa
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

Inlägg av barbarossa »

Jag är inte insatt i Arduino, men använder du någon arduino-rutin för pushbutton som input för givaren?

//A
Johan123
Inlägg: 25
Blev medlem: 19 juli 2009, 14:00:42

Re: Problem med mätning av pulser från halleffektswitch

Inlägg av Johan123 »

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?
barbarossa
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

Inlägg av barbarossa »

Förvisso, men just pushbutton i godtycklig programmeringsmiljö brukar har debounce. Du skall snarare rikta in dig på räknare/counter.

//A
Johan123
Inlägg: 25
Blev medlem: 19 juli 2009, 14:00:42

Re: Problem med mätning av pulser från halleffektswitch

Inlägg av Johan123 »

Så du tror alltså att det är sjävla programet som inte klarar av den höga frekvensen och korta tiderna?
barbarossa
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

Inlägg av barbarossa »

Ja.
//A
Johan123
Inlägg: 25
Blev medlem: 19 juli 2009, 14:00:42

Re: Problem med mätning av pulser från halleffektswitch

Inlägg av Johan123 »

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?
Användarvisningsbild
prototypen
Inlägg: 11105
Blev medlem: 6 augusti 2006, 13:25:04
Ort: umeå

Re: Problem med mätning av pulser från halleffektswitch

Inlägg av prototypen »

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
barbarossa
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

Inlägg av barbarossa »

var nollar du "buttonPushCounter" ?

hur ofta skriver du till seriellporten?
Johan123
Inlägg: 25
Blev medlem: 19 juli 2009, 14:00:42

Re: Problem med mätning av pulser från halleffektswitch

Inlägg av Johan123 »

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).
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?



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.
Användarvisningsbild
prototypen
Inlägg: 11105
Blev medlem: 6 augusti 2006, 13:25:04
Ort: umeå

Re: Problem med mätning av pulser från halleffektswitch

Inlägg av prototypen »

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
Johan123
Inlägg: 25
Blev medlem: 19 juli 2009, 14:00:42

Re: Problem med mätning av pulser från halleffektswitch

Inlägg av Johan123 »

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.
barbarossa
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

Inlägg av barbarossa »

"...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?
Skriv svar