Indholdsfortegnelse:

5-Wire Resistive Touch Sensor: 10 trin
5-Wire Resistive Touch Sensor: 10 trin

Video: 5-Wire Resistive Touch Sensor: 10 trin

Video: 5-Wire Resistive Touch Sensor: 10 trin
Video: Resistive Touch Panels - Structure and Working Principles of Resistive Touch Panels 2024, Juli
Anonim
5-tråds modstandsdygtig berøringssensor
5-tråds modstandsdygtig berøringssensor

Hej hej!

Det er et stykke tid siden, jeg har arbejdet på dette websted, og det ser ud til, at der er meget, der har ændret sig! Jeg er endelig klar til at komme tilbage bag rattet til et andet projekt, og jeg synes, det er på tide at ændre lidt på tingene selv!

Jeg har længe haft et projekt i tankerne baseret på 271828's Plate and Ball, men jeg har meget at lære om sensorer og kontrolteori, før det er færdigt. Jeg tænkte, at så længe jeg lærer en ting eller to, kan jeg tage jer med mig!

Til det formål vil mit mål for disse selvstudier være en slags hybrid mellem mine mere polerede selvstudier og en rekord for selve projektet. Hver individuel vejledning vil være et skridt i den rejse og vil indeholde detaljer, som jeg tidligere har slettet, f.eks. Kodeudvikling (i stedet for bare færdiggjort kode) og fejltagelser, jeg tager undervejs.

Jeg er meget spændt på dette nye projekt, og jeg glæder mig til at se, hvor godt det fungerer!

I dag får vi bare et simpelt 5-Wire touch panel, der arbejder med en DP-32.

Lad os komme igang!

Trin 1: Hvad skal du bruge

Hvad du skal bruge
Hvad du skal bruge

Fordi denne vejledning handler om at få en enkelt sensor til at fungere, er der ikke meget du skal bruge ud over en mikrokontroller og berøringspanelet.

  • En mikrokontroller.

    Jeg bruger min DP32 med et indbygget brødbræt, fordi det gør prototyper utroligt enkle

  • Assorterede ledninger og kabler.

    Jeg kunne have brugt berøringspanelets indbyggede båndkabel, men hvis det rives, er hele panelet ubrugeligt. I stedet bruger jeg et 6-leder kabel til at reducere belastningen på det indbyggede kabel

  • Det titulære 5-wire resistive touch-panel!

    Jeg havde et 4-leder resistivt berøringspanel, men båndkablet til det gik i stykker

Og det er det!

Trin 2: Hvad er et 5-leder resistent berøringspanel?

Hvad er et 5-tråds resistent berøringspanel?
Hvad er et 5-tråds resistent berøringspanel?
Hvad er et 5-leder resistent berøringspanel?
Hvad er et 5-leder resistent berøringspanel?
Hvad er et 5-tråds resistent berøringspanel?
Hvad er et 5-tråds resistent berøringspanel?

Hvis du har læst min 4-wire touch-panel tutorial, vil du være bekendt med den generelle idé om en resistiv berøringssensor, men 5-wire paneler og 4-wire paneler fungerer lidt anderledes.

Jeg kan godt lide dette panel, fordi du kan se alle trådsporene, hvilket gør det let at se, hvad der gør hvad. På det første billede har jeg farvet hvert spor forskelligt. Du kan sikkert se, at fire af ledningerne (pink, gul, orange og lilla) hver går til et af de fire hjørner. Den midterste ledning (rød) går til fleksibelt sensorpanel.

På det andet billede har vi indstillet to af de fire ledninger (øverst til højre og nederst til højre) til en høj spænding (vist med rødt), mens de to andre (øverst til venstre og nederst til venstre) er indstillet til lav spænding (vist med blåt). Dette skaber en gradient af spændinger på tværs af hele panelet. I dette tilfælde går gradienten langs X-aksen, så en højere spænding repræsenterer en højere position langs X-aksen.

Når vi rører vores finger til panelet, presser det den fleksible sensor ned og forbinder til et sted langs X-aksens gradient. Spændingssensorer på vores mikrokontroller kan fornemme denne spænding og fortælle dig, hvor på din X-akse din finger rører!

På det tredje billede kan du se, hvordan konfigurationen ændres, så vi kan føle langs Y-aksen. På denne måde kan vi se, hvor i 2-D-rummet vores finger rører!

Trin 3: Ledningsføring

Ledninger
Ledninger
Ledninger
Ledninger

Som du sikkert kan se på billederne ovenfor, har jeg forbundet mine fire hjørner hver til deres egen digitale output -pin. Det vil lade mig indstille dem individuelt til høj eller lav. Min sensor pin bliver forbundet til en analog input pin. Det fine ved en 5-leder berøringsskærm, i modsætning til en 4-leder, er, at du kun har brug for en analog pin, mens en 4-leder ville kræve 2.

Dine ledninger kan naturligvis variere, men mine ledninger er som følger:

Analog 0 (pin 6) tilsluttes sensor (midterste pin)

Digital 3 forbinder til øverst til højre (øverste pin)

Digital 2 opretter forbindelse til øverst til venstre (anden øverste pin)

Digital 1 tilsluttes nederst til venstre (anden nederste nederste pin)

Digital 0 tilsluttes nederst til højre (nederste pin)

Det er værd at bemærke igen, at jeg bruger et 6-leder kabel til at gå mellem mikrokontrolleren og panelet. Jeg har ladet den øverste pin af dette kabel være tilsluttet.

Trin 4: Softwareudvikling

Softwareudvikling
Softwareudvikling

Tidligere har jeg normalt droppet en færdig softwarefil, som du kan bruge, måske med en kort gennemgang af, hvad alt gør. Det kan jeg ikke lide. Jeg vil have, at denne serie skal handle om projekter under udvikling, og til det formål vil jeg medtage selve udviklingen af denne software fra start til slut.

Som sædvanlig vil jeg bruge Arduino IDE med Digilent -kernen. Hvert afsnit vil indeholde en kodefil, skærmbillede samt en beskrivelse af tilføjelserne og hvad vi forsøger at opnå.

Lige nu starter jeg med et simpelt blink -program med forsinkelsesstil, præcis det samme som det, du finder i mappen Eksempler. Hvis du læser det lange overskrift, jeg skrev, vil du se, at hvert trin i denne proces vil ændre programmet for at bringe det tættere på vores slutmål.

Trin 5: Angiv maskinblink

State Machine Blink
State Machine Blink

Mit første træk er at ændre blinkfunktionen fra en baseret på "forsinkelse ()" til en tilstandsmaskine.

For dem, der ikke er vant til at skifte udsagn, fungerer det på samme måde som en if-sætning. Denne (i den orange boks) tester vores "tilstand" -variabel (som starter ved 0). Derefter springer det til sagen for vores nuværende tilstand. Du vil se, at sag 0 og 2 er ansvarlige for at tænde og slukke LED'en (henholdsvis), mens sag 1 og 3 er ansvarlige for at vente mellem kontakter.

Trin 6: Knap blink

Knap blink
Knap blink
Knap blink
Knap blink
Knap blink
Knap blink

Dernæst ville jeg have, at knappen skulle bruges til at blinke lyset. I stedet for at komplicere dette, flyttede jeg bare alle tilstande med én (tilstand 0 bliver tilstand 1 osv.). Når du gør dette, skal du være omhyggelig med at øge udgangstilstandene såvel som selve staten (se billede 3).

Jeg slettede også den anden "vent" -tilstand. Det betyder, at knappen tænder lyset i et sekund, og du kan trykke på knappen igen umiddelbart efter, at den slukkes.

Det er værd at bemærke, at dette system automatisk afbryder knappen for os, fordi vi skal vente på, at LED'en slukker, før vi vender tilbage til tilstand 0, hvor knappen kan udløse cyklussen igen.

Trin 7: Seriel kommunikation

Seriel kommunikation
Seriel kommunikation
Seriel kommunikation
Seriel kommunikation

Denne opdatering er meget lille. Alt, hvad jeg ville gøre, var at oprette en seriel forbindelse og sende beskeder. På det første billede kan du se, at jeg begynder Serial i opsætningsfunktionen (). Inde i vores statsmaskine tilføjede jeg linjer til tilstande 1 og 3, der sender enkle meddelelser til computeren gennem seriel.

Trin 8: Læsningskoordinater

Læsningskoordinater
Læsningskoordinater
Læsningskoordinater
Læsningskoordinater
Læsningskoordinater
Læsningskoordinater
Læsningskoordinater
Læsningskoordinater

Det er godt, at det sidste trin var let, for det her var en doozy.

For at starte har jeg tilføjet variabler til vores berøringspanel, herunder nogle dedikerede tidsvariabler for både berøringspanelet og vores knap. Du kan se hvorfor om lidt.

Jeg har fuldstændig omskrevet statsmaskinen. Det er lidt forvirrende at se på koden, så jeg har medtaget et blokdiagram, der skal illustrere, hvad der er gjort.

Ting at bemærke: Der er tre "ventende" trin nu. Én for hver konfiguration af berøringspanelet, for at lade spændingerne slå sig ned, før der foretages en måling, og en for at give knappen tid til korrekt afvisning. Disse ventetrin er derfor, jeg ville give både knappen og berøringspanelet deres egne tidsvariabler.

Bemærk: DEBOUNCE_TIME -konstanten kan være lidt lav. Forøg den gerne.

Trin 9: Oprydning

Gøre rent
Gøre rent
Gøre rent
Gøre rent
Gøre rent
Gøre rent

Vi er nået frem til den endelige version af koden til dette projekt!

Til at starte med har jeg tilføjet en funktion kaldet loop_diff () for at beregne forløbet tid. Det interne ur til DP32 er en usigneret lang, og selvom det er yderst usandsynligt, er der mulighed for, at uret kan sløjfe en gang i løbet af denne kodes driftstid*. I så fald vil det ganske enkelt at fratrække den aktuelle tid fra den tid, der er gemt i btn_time eller panel_time, give os noget underligt, så jeg skrev loop_diff () for at opdage, hvornår sløjfer forekommer, og opføre mig derefter.

Jeg har også lavet en lille smule oprydning. Jeg har fjernet den nu ubrugte variabel "state_time". Jeg har skiftet fra LED_BUILTIN -mærket (som er en Arduino -standard) til PIN_LED1 -mærket (som er standard for chipKit og DP32). Jeg har også fjernet alle meddelelser via Serial om start og afslutning af processen, hvilket gør vores data gennem Serial meget renere.

*Jeg lavede matematikken for mange år siden, og jeg tror, at det for millis () -funktionen ville tage noget som en uge med konstant driftstid, før variablen ville gå i loop.

Trin 10: Endelige tanker

Endelige tanker
Endelige tanker

Og det er det!

Hvis du har fulgt med, skal du nu have et fungerende berøringspanel forbundet til din mikrokontroller! Dette var et lille projekt, men det er en del af et større projekt. Jeg arbejder på noget som 271828's Plate and Ball, og jeg har en lang vej at gå, før det sker. Jeg vil prøve at tage dig med i hele processen, og hver del skal være sit eget lille projekt.

Dette er en læringsproces for mig, så lad gerne dine tanker og forslag stå i kommentarerne herunder.

Tak, og vi ses næste gang!

Anbefalede: