Metal detektor
Overordnet beskrivelse af metal detektor modul: Metal touch sensor module, er et modul lavet til Ardruino men den duer også til andre ting. Den har 4 pins. Pin AO er et analogt output, Pin GND er ground, Pin 5+ er hvor den får strøm fra og skal sluttes til strømforsyningen. Pin DO er digitalt output. Måden den fungere på er ved at rødre benet på den sorte touch sensor i enden af boardet, hvor den derefter sender et signal ud af AO og DO. DO-signalet skulle gerne være pulserende med en frekvens på 50 Hz og have en vide på 4.8 ms. AO signalet er det inverterede signal af DO, her er der så stadig en frekvens på 50 Hz og med en vide på 15.2 ms. Man kan se at den duer ved at en lampe lyser rød når der kommer strøm igennem og den er tændt og en anden lampe lyser når man rører ved benet på den sorte touch sensor i enden.
Princip-diagram for Metal detektor
I pricippet fungere modult når man rører det med en finger eller noget metal. |
Print Metal detektor
Når der er strøm i +5v lyder led1. når der er strøm i både +5v og igennem transistoren lyder led2. A0 bliver inverteret først men er ellers magen til D0 som kan ses på de kommer fra samme kilde, transistoren. Bemærk: det er ikke sikkert kredsløbet ser sådan ud, det er bare et kvalificeret bud på hvordan det kunne se ud. Board og Schematich ligger i en Fil:Metal touch sensor.zip. |
Diagrammet metal detektor |
Andre versioner af metaldetektor
Der findes også en version hvor der kun er 3 udgangspinde: GND,5V+ og DO. Dennes board er ikke rødt men grønt.
Software modulet Modul_Metaldetektor.jal
Overordnet beskrivelse af hvad softwaren kan
Anvendelse af Meal detektor
Medmindre man har brug for noget meget specifikt kan modulet udmærket bruges i sig selv som en kontakt eller sensor der tændes når man eller metal rører ved det. hvis man nu skulle bruge dne til noget specifikt kan nogle meget enkle koder se sådan ud: Til en audrino ville koden se sådan ud:
//setup default LED on pin 13 const int ledPin = 13; //setup touch sensor on pin 3 const int touchPin = 3;
//store the time when last event happened unsigned long lastEvent = 0; //store the state of LED boolean ledOn = false;
//setup pins void setup() {
pinMode(ledPin, OUTPUT); pinMode(touchPin, INPUT);
}
void loop(){
//read touch sensor state int touchState = digitalRead(touchPin); //only interested in the HIGH signal if (touchState == HIGH) { //if 50ms have passed since last HIGH pulse, it means that the //touch sensor has been touched, released and touched again if (millis() - lastEvent > 50) { //toggle LED and set the output ledOn = !ledOn; digitalWrite(ledPin, ledOn ? HIGH : LOW); } //remember when last event happened lastEvent = millis(); }
} enable_digital_io() -- disable analog I/O (if any) -- men vi bruger jo JAL så derfor skal det skrives som nedenunder-- IO definitioner portc_direction = all_output
alias kontakt is pin_A3 pin_A3_direction = input
--
-- Main loop forever loop
if kontakt=HIGH then portc=ON delay_50ms(10) if kontakt=LOW then portc=OFF delay_50ms(10)
end loop --
Når man vil anvende Modul_Metaldetektor, så skal man include Modul_Metaldetektor.jal som følger:
include Modul_Metaldetektor.jal
Hvis Modul_Metaldetektor.jal ligger i \lib inde i c:\jalpack så kan compileren finde modulet.
JAL-filen ligger sammen med et par eksempler inde i Fil:Metaldetektormodul.zip
Modul_Metal detektor er testet og den duede ikke men princippet i den gælder stadig med at man måler på det analoge output man får, omdanne det til at tal ved at læse den med picens adc_holst og derefter enten sende high eller low alt efter tallet. Da jeg testede den gjorde jeg det med to lamper men ingen af dem lyste.
PIC | pin |
---|---|
PIC16F684 | a2, a4 |
PIC16F690 | a0, a1, a2, a4, c0, c1, c2, c3, c6, c7</ref>, b4, b5 |
Forklaring af Modul_Metal detektor software
softwaren er bygget op så en led lampe lyser når man trykker på det grå metal i spidsen af modulet.
Initialisering af softwaren
Initialiseringen kan i Pseudokode udtrykkes som følger:
Læs opsætningen i Modul_XX_def.jal læs kontakt output=?
eller for den anden
Læs opsætningen i modul metal detektor læs variablen metal tænd lamper alt efter værdien af metal
Moduler på Holstebro HTX | |||||||
---|---|---|---|---|---|---|---|
Tastaturer | Displays | AD-konvertering | I/O-ekspander | Serielt | Interface | Færdige | Andre |
RC-tast - AD-tast - M_tast | ALCD - LCD | ADC_holst - ADC mcp3201 - mcp3208 |
input - output | Seriel_holst - Serial hardware Serial hw int cts - Serial software |
Stepmotor - RFID RGB - RF-link - Afstand |
Humidity - Analog temp - Dig temp Accelerometer |
Rotary Encoder |
Oversigt over Hardware Moduler på Holstebro HTX