Hamster met hall sensor - radje telling

Arduino specifieke Software
Berichten: 5
Geregistreerd: 01 Apr 2018, 22:17
Woonplaats: hoogeveen

Hamster met hall sensor - radje telling

Berichtdoor markus » 02 Apr 2018, 13:15

een hamster kan 8 km op een nacht lopen ( in zijn radje)

Nu leek het mij leuk om met de arduino een telling van elke nacht te maken wat het aantal omwentellingen zijn:
-arduino uno
-hall sensor
- ledje
- mini voltage display 0-5V ( zijn 3 digits) bij 0 v staat er 0.01 en bij 5 V staat er 5.00

hall zit op 2
led op 13 ( ledje aan als magneetje detecteerd)
display op 3

de telling op hall sensor dmv magneetje komt binnen ( magneet komt straks op het radje)

Heb wat code geprobeerd maar zit wat vast, en heb te weinig kennis van arduino. :P onderstaande is een probeersel !!

Kan iemand mij helpen?
stel nacht 1 maakt de hamster 100 rondjes, staat tellertje op 100 en de volgende nacht op 200 etc

zijn vast niet veel regels maar kom er niet uit, onderstaande heb ik wat geprobeerd:


Radje = 1 Telling = 1000
Radje = 1 Telling = 1000
Radje = 1 Telling = 1000
Radje = 1 Telling = 1000
Radje = 1 Telling = 1000


*/

// These constants won't change. They're used to give names to the pins used:
// const int analogInPin = 2;
const int analogOutPin = 3;

int sensorValue = 2; // value read from the hall sensor
int outputValue = 3; // value output



void setup() {

// initialize the hall effect sensor pin as an input:
pinMode(sensorValue, INPUT);
// initialize serial communications at 9600 bps:
Serial.begin(9600);
}

void loop() {




// read the analog in value:
sensorValue = digitalRead(2);
// map it to the range of the analog out:
outputValue = (sensorValue*1000);
// change the analog out value:
analogWrite(analogOutPin, outputValue);

// print the results to the Serial Monitor:
Serial.print("Radje = ");
Serial.print(sensorValue);
Serial.print("\t Telling = ");
Serial.println(outputValue);

// wait 2 milliseconds before the next loop for the analog-to-digital
// converter to settle after the last reading:
delay(2);
}

Advertisement

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Hamster met hall sensor - radje telling

Berichtdoor Koepel » 02 Apr 2018, 21:14

Kun je de State Change Detection aan de hall sensor toevoegen ?
https://www.arduino.cc/en/Tutorial/StateChangeDetection

Is het een hall switch met digitale uitgang of een hall sensor met analoge uitgang ?

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Hamster met hall sensor - radje telling

Berichtdoor shooter » 02 Apr 2018, 22:37

dit is een mooi te doen met een interupt.pinnen 2 en 3.
telkens als er een interupt is (doe dat met changing) tel dan 1 op bij een teller.
zet die waarde in een variabele en doe daar een factor op.
het maximum is namelijk 255 dus daar ben je zo aan.
zet de uitkomst dan met een analogWrite op de uitgang A3
in je loop kun je dan rustig aan de waarde ook zetten, maar doe het rustig aan want er kunnen maar 1000 karakters per seconde, een delay niet gebruiken, want dat gaat niet goed met interupt.
zie ook attachinetrupt voor meer info.
Dit is wel een mooie les, erg pittig maar heel leerzaam.
paul deelen
shooter@home.nl

Berichten: 5
Geregistreerd: 01 Apr 2018, 22:17
Woonplaats: hoogeveen

Re: Hamster met hall sensor - radje telling

Berichtdoor markus » 04 Apr 2018, 22:48

Bedankt voor jullie bijdrage,

de hall sensor is een edge teller.

monitor geeft nu:
Radje staat stil
Weer 1x rond gedraaid
aantal keer rond gedraaid: 53
Radje staat stil
Weer 1x rond gedraaid
aantal keer rond gedraaid: 54
Radje staat stil
Weer 1x rond gedraaid
aantal keer rond gedraaid: 55

krijg dit niet goed op de A3, wat de telling moet vertalen naar 0-5V, elke extra telling is 0.01 V extra.
Ik hoop dat A3 als uitgang gemaakt kan worden? Of is A0 -A5 enkel Analoge ingang??


// constanten:
const int HallPin = 2; // pin van de hall sensor
const int ledPin = 13; // pin met de LED, deze knippert alleen mee met de ingang van de Hall sensor
int analogPin = 3; // pin met de display met 0-5 sturing A3

// Variables:
int buttonPushCounter = 0; // teller voor ingang 2
int buttonState = 0; // huidige state van ingang 2
int lastButtonState = 0; // previous state of the button

void setup() {
// initialize pin2 als input:
pinMode(HallPin, INPUT);
// initialize de Led als output:
pinMode(ledPin, OUTPUT);
// initialize de display met 0-5 sturing:
pinMode(analogPin, OUTPUT);
// initialize serial communication:
Serial.begin(9600);
}


void loop() {
// lees ingang 2 als input pin:
buttonState = digitalRead(HallPin);

analogRead(buttonState); // lees de button status om dit als 0-5 te maken
analogWrite(ledPin, buttonState / 4); // analogRead values go from 0 to 1023, analogWrite values from 0 to 25


// vergelijk de buttonState to its previous state
if (buttonState != lastButtonState) {
// if the state has changed, increment the counter
if (buttonState == HIGH) {
// if the current state is HIGH then the button went from off to on:
buttonPushCounter++;
Serial.println("Weer 1x rond gedraaid");
Serial.print("aantal keer rond gedraaid: ");
Serial.println(buttonPushCounter);
} else {
// if the current state is LOW then the button went from on to off:
Serial.println("Radje staat stil");
}
// Delay a little bit to avoid bouncing
//delay(50);
}
// save the current state as the last state, for next time through the loop
lastButtonState = buttonState;


// turns on the LED every four button pushes by checking the modulo of the
// button push counter. the modulo function gives you the remainder of the
// division of two numbers:
//if (buttonPushCounter % 4 == 0) {
//digitalWrite(ledPin, HIGH);
//} else {
// digitalWrite(ledPin, LOW);
// }

}

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Hamster met hall sensor - radje telling

Berichtdoor Koepel » 04 Apr 2018, 23:05

Oeps :oops: shooter heeft gelijk. Het is een puls, dus zul je interrupts moeten gebruiken.

Je kunt dit wel even als een kleine tussentest doen.
De delay() kun je inderdaad beter uitzetten, de hall sensor heeft geen last van contactdender.

De Arduino Uno heeft geen analoge uitgangen.
Het lijkt me merkwaardig om het aantal rondjes op een analoge voltmeter te laten zien.
Je kunt een display aan de Arduino verbinden, en daar het aantal kilometers op laten zien. Is dat niet veel leuker ?

Zou je voortaan code tags willen gebruiken rondom de sketch op dit forum ? Boven het tekst veld zit een knop "Code" voor de code tags, je mag ook "Select a Syntax" doen en dan "C++".

Kun je al het overbodige weg laten ? Laat die analogWrite() met de led ook maar weg. En deze hele regel ook maar weg: Serial.println ( "Radje staat stil" ) ;

Loopt dan de "buttonPushCounter" normaal omhoog met iedere omwenteling ?
Dat zou een mooi begin zijn, dat is wel om te zetten naar interrupts.

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Hamster met hall sensor - radje telling

Berichtdoor shooter » 05 Apr 2018, 20:15

elke arduino heeft analoge uitgangen en je hebt gelijk A3 is een analoge ingang bijvoorbeeld, zoek naar een ~ naast de pin bijv 9,10,11 en doe daar een analogwrite naartoe.
die loopt tot 255 en dan is de uitgang 5 Volt. dus begin eens met de teller * 2.
paul deelen
shooter@home.nl

Berichten: 5
Geregistreerd: 01 Apr 2018, 22:17
Woonplaats: hoogeveen

Re: Hamster met hall sensor - radje telling

Berichtdoor markus » 05 Apr 2018, 23:31

uno-displ.JPG
uno met display
uno-displ.JPG (56.54 KiB) 6946 keer bekeken
dus een pushbuttoncounter *2 op bv pin 9 zetten zal de display laten optellen?

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Hamster met hall sensor - radje telling

Berichtdoor Koepel » 06 Apr 2018, 03:01

Met een display bedoelde ik een LCD display zoals hieronder.
Ik begrijp nog steeds niet wat je met die voltmeter wilt doen. Je kunt een kleine test sketch maken of je met analogWrite() een bepaalde waarde op jouw display krijgt. Maar ik zie niet hoe dat bruikbaar kan zijn. De PWM modulatie van analogWrite() heeft maar 256 stappen.

Heb je een led zonder weerstand op pin 13 ?

In plaats van schroeven kun je beter tyraps gebruiken.
https://www.aliexpress.com/item/3x100mm-100pcs-colorful-Nylon-Cable-Self-locking-Plastic-Wire-Zip-Ties-Set-Fastening-Wrap-Strap-Cable/32838725960.html
Bijlagen
metdisplay.png
metdisplay.png (32.28 KiB) 6924 keer bekeken

Berichten: 5
Geregistreerd: 01 Apr 2018, 22:17
Woonplaats: hoogeveen

Re: Hamster met hall sensor - radje telling

Berichtdoor markus » 06 Apr 2018, 13:33

waar ik naar op zoek is dan:
code op de pushButton waarde ++, te verhogen , te vertalen naar pin 9 om deze bij elke stap verhoging 0,01 V te verhogen.

tot nu:
analogPin als int ingesteld.
alalogPin++

waarde ( van pin9) in serial monitor gezet en deze stapt mooi mee omhoog.
Pin 9 zelf, zal denk ik de stappen vertaald moeten hebben naar 0-5V
Pin 9 uitgang blijft op 0.01 staan in display, ook als telt pin over de 100 stappen

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Hamster met hall sensor - radje telling

Berichtdoor shooter » 06 Apr 2018, 20:21

analogpin moet 9 zijn.
paul deelen
shooter@home.nl

Volgende

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: RussellAlets en 20 gasten