Att koppla upp en touch screen
Att koppla upp en touch screen
Hallå, jag har under en tid haft lite idéer om några elektroniska projekt som jag skulle vilja ge mig på. Dock har jag i princip ingen användbar kunskap om elektroniken på denna nivå. Jag har lekt lite med dioder, motstånd, transistorer och lite sånt när jag var yngre, men det är på den nivån jag ligger.
Så nu tänkte jag ta tag i det här och har kommit vad jag vill göra.
Jag kommer att köpa en resistiv touch screen, sanolikt denna och göra en matris av ljusdioder som jag sätter bakom skärmen, där jag sedan kan sätta på och stänga av enskilda dioder genom att röra på skärmen. Det hela fyller ingen annan funktion än att jag skall ha en sak där jag lätt kan se resultat på mina programmeringsexperiment.
Så, jag hoppas att jag med hjälp av er mer kunniga skall kunna ro det här i hamn och lära mig en del på vägen.
Projektets olika steg:
1. Koppla upp touch screen'en till en programmerbar krets.
2. Programmera kretsen.
3. Fixa och koppla in en diodmatris och bygga ihop själva mojängen i en låda a'la iphone.
Så, om jag börjar med punkt 1:
Jag vet inte mer än att victor_passe tipsade mig (tack) om att jag behöver "...minst 2adc ingångar, 1 digital utgång och 0V för att mäta." Jag tror mig veta att adc betyder analog till digital-konverterare, och digital utgång är väl inga konstigheter, vad 0V innebär är jag dock osäker på.
Så, min tanke är att jag hittar ett lämpligt massproducerat chip som innehåller alla funktioner jag behöver för att koppla in touch screen'en, där jag kommer åt alla ingångar och utgångar i en programmeringsmiljö, i t.ex. c eller c++(?). Jag har inte kodat c/c++ tidigare, och sannerligen inga chip, men känner mig väl förtrogen med högnivåspråk som c#, php, java och liknande så jag hoppas att tröskeln till c/c++ inte blir alltför hög. Mellan c och c++ så föredrar jag nog c++ pga. klassimplementationen, men vet inte hur hårdvarustödet ser ut.
Ligger jag i rätt spår?
När jag sedan har kommit så långt att det är läge att börja programmera, hur ser utvecklingsmiljön ut? (Eller kan se ut...) Kan man koppla in chipet till datorn på något sätt så att man kan debugga och läsa av chipet i realtid? Vad krävs för hårdvara för att överhuvudtaget kunna programmera/föra över kod mot ett chip?
Har även haft en tanke på att först fixa ett chip som sköter översättningen av de analoga signalerna ifrån touck screen'en till digitala x/y koordinater som sedan skickas till ett andra chip där jag sedan gör allt tungt arbete med att styra och ställa med saker och ting beroende på vilka koordinater jag får in. Bra idé? Prestandavinst? Onödigt? Enklare? Krångligare?
Alla tips och råd emottages tacksamt!
Så nu tänkte jag ta tag i det här och har kommit vad jag vill göra.
Jag kommer att köpa en resistiv touch screen, sanolikt denna och göra en matris av ljusdioder som jag sätter bakom skärmen, där jag sedan kan sätta på och stänga av enskilda dioder genom att röra på skärmen. Det hela fyller ingen annan funktion än att jag skall ha en sak där jag lätt kan se resultat på mina programmeringsexperiment.
Så, jag hoppas att jag med hjälp av er mer kunniga skall kunna ro det här i hamn och lära mig en del på vägen.
Projektets olika steg:
1. Koppla upp touch screen'en till en programmerbar krets.
2. Programmera kretsen.
3. Fixa och koppla in en diodmatris och bygga ihop själva mojängen i en låda a'la iphone.
Så, om jag börjar med punkt 1:
Jag vet inte mer än att victor_passe tipsade mig (tack) om att jag behöver "...minst 2adc ingångar, 1 digital utgång och 0V för att mäta." Jag tror mig veta att adc betyder analog till digital-konverterare, och digital utgång är väl inga konstigheter, vad 0V innebär är jag dock osäker på.
Så, min tanke är att jag hittar ett lämpligt massproducerat chip som innehåller alla funktioner jag behöver för att koppla in touch screen'en, där jag kommer åt alla ingångar och utgångar i en programmeringsmiljö, i t.ex. c eller c++(?). Jag har inte kodat c/c++ tidigare, och sannerligen inga chip, men känner mig väl förtrogen med högnivåspråk som c#, php, java och liknande så jag hoppas att tröskeln till c/c++ inte blir alltför hög. Mellan c och c++ så föredrar jag nog c++ pga. klassimplementationen, men vet inte hur hårdvarustödet ser ut.
Ligger jag i rätt spår?
När jag sedan har kommit så långt att det är läge att börja programmera, hur ser utvecklingsmiljön ut? (Eller kan se ut...) Kan man koppla in chipet till datorn på något sätt så att man kan debugga och läsa av chipet i realtid? Vad krävs för hårdvara för att överhuvudtaget kunna programmera/föra över kod mot ett chip?
Har även haft en tanke på att först fixa ett chip som sköter översättningen av de analoga signalerna ifrån touck screen'en till digitala x/y koordinater som sedan skickas till ett andra chip där jag sedan gör allt tungt arbete med att styra och ställa med saker och ting beroende på vilka koordinater jag får in. Bra idé? Prestandavinst? Onödigt? Enklare? Krångligare?
Alla tips och råd emottages tacksamt!
Re: Att koppla upp en touch screen
Finns specialkretsar för detta , från bl.a. MAXIM och Texas.
Re: Att koppla upp en touch screen
Här är bra info om hur en resistiv touch screen fungerar och hur du kopplar in en AVR till den: AVR application note AVR341.
Du har fyra pinnar som kan fungera både som digitala utgångar och som analoga ingångar.
Först testar du om någon trycker på panelen: sätt LÅG* utgång på ena långsidan. Mät på ena kortsidan med pull-up-motstånd - om du får nära noll volt så trycker någon på panelen. Detta tror jag kan avläsas digitalt. Sedan avgör du positionen:
1) i höjdled: sätt översidan till HÖG och undersidan till LÅG. Läs av en (eller båda) kortsidorna analogt. Spänningen motsvarar placering i höjdled.
2) växla nu så att du gör de båda kortsidorna till utgångar: lägg LÅG på vänster och HÖG på höger anslutning. Läs av analogt på någon eller båda långsidorna - resultatet är en spänning proportionell mot positionen i x-axeln.
Men nu är det inte riktigt så enkelt!
Det är ganska hög kapacitans i touchskärmen - därför kommer dina spänningar inte nå rätt nivå direkt efter att du satt sina utgångar till rätt nivåer. Därför ska du vänta några millisekunder innan du läser av efter att ha ändrat läge. Det kan också vara en fördel att läsa av flera gånger och ta ett medelvärde.
Angående själva panelen:
Jag beställde flera olika modeller från dealextreme , men trots olika utseende på bild osv. så fick jag exakt samma modell med olika ordernummer på. Så exakt vad du får får du se när den kommer fram. Flexikabeln ansluter du enklast genom en 4-polig FFC kontakt (FlatFlexCable), kallas även ZIF-kontakt. (finns t.ex. på ELFA). Det kan finnas olika pitch på kontakten: 1mm, 0.5mm eller ännu mindre.

Jag har precis byggt ett kretskort till min grafiska display med touchscreen, får se när jag har tid att testa / programmera den.
__________________________________
* HÖG / LÅG syftar på logiska nivåer.
Du har fyra pinnar som kan fungera både som digitala utgångar och som analoga ingångar.
Först testar du om någon trycker på panelen: sätt LÅG* utgång på ena långsidan. Mät på ena kortsidan med pull-up-motstånd - om du får nära noll volt så trycker någon på panelen. Detta tror jag kan avläsas digitalt. Sedan avgör du positionen:
1) i höjdled: sätt översidan till HÖG och undersidan till LÅG. Läs av en (eller båda) kortsidorna analogt. Spänningen motsvarar placering i höjdled.
2) växla nu så att du gör de båda kortsidorna till utgångar: lägg LÅG på vänster och HÖG på höger anslutning. Läs av analogt på någon eller båda långsidorna - resultatet är en spänning proportionell mot positionen i x-axeln.
Men nu är det inte riktigt så enkelt!
Det är ganska hög kapacitans i touchskärmen - därför kommer dina spänningar inte nå rätt nivå direkt efter att du satt sina utgångar till rätt nivåer. Därför ska du vänta några millisekunder innan du läser av efter att ha ändrat läge. Det kan också vara en fördel att läsa av flera gånger och ta ett medelvärde.
Angående själva panelen:
Jag beställde flera olika modeller från dealextreme , men trots olika utseende på bild osv. så fick jag exakt samma modell med olika ordernummer på. Så exakt vad du får får du se när den kommer fram. Flexikabeln ansluter du enklast genom en 4-polig FFC kontakt (FlatFlexCable), kallas även ZIF-kontakt. (finns t.ex. på ELFA). Det kan finnas olika pitch på kontakten: 1mm, 0.5mm eller ännu mindre.

Jag har precis byggt ett kretskort till min grafiska display med touchscreen, får se när jag har tid att testa / programmera den.
__________________________________
* HÖG / LÅG syftar på logiska nivåer.
Re: Att koppla upp en touch screen
Angående programmeringsmiljö så finns AVRStudio och WinAVR (med AVR-GCC) gratis att ladda ner hos Atmel, om du nu vill lära dig att programmera Atmels 8 bitars AVR kretsar. Det är ganska enkelt att installera och komma igång (I Windows).
Tomas föreslår t.ex. att du köper ett färdigt chip (touch-kontroller) som läser av touchpanelen. Men då behöver du ändå en mikrokontroller för att i sin tur läsa av den kretsen (det blir två kretsar så som du beskrev det i ditt exempel). Själv tänker jag läsa av touchpanelen direkt med min AVR - Det enda som krävs är egentligen en funktion som sköter själva avläsningen. Å andra sidan, har du två kretsar måste du ändå ha en funktion som sköter avläsningen - fast istället för analogt så får du hantera kommunikationsprotokollet för touch-kontrollern istället. Enklare eller svårare? Tja... det beror kanske på vad man är van vid. Gillar man analog elektronik bättre än datakretsar så strunta i separat touch-kontroller, är mitt förslag. Tomas argument för touch-kontrollern (vi har pratat om detta) är att det kan vara svårt att få bra värden och att det kanske krävs lite trixande / moddning innan man får allt på plats.
(bilder på mitt touch-projekt här)
Tomas föreslår t.ex. att du köper ett färdigt chip (touch-kontroller) som läser av touchpanelen. Men då behöver du ändå en mikrokontroller för att i sin tur läsa av den kretsen (det blir två kretsar så som du beskrev det i ditt exempel). Själv tänker jag läsa av touchpanelen direkt med min AVR - Det enda som krävs är egentligen en funktion som sköter själva avläsningen. Å andra sidan, har du två kretsar måste du ändå ha en funktion som sköter avläsningen - fast istället för analogt så får du hantera kommunikationsprotokollet för touch-kontrollern istället. Enklare eller svårare? Tja... det beror kanske på vad man är van vid. Gillar man analog elektronik bättre än datakretsar så strunta i separat touch-kontroller, är mitt förslag. Tomas argument för touch-kontrollern (vi har pratat om detta) är att det kan vara svårt att få bra värden och att det kanske krävs lite trixande / moddning innan man får allt på plats.
(bilder på mitt touch-projekt här)
Re: Att koppla upp en touch screen
Håller med om att det går fortare att komma fram till bra resultat med en dedikerad touch-krets. Har man ingen erfarenhet av lågnivåprogrammering så lär man ha tillräckligt att stånga sig blodig med utan att dessutom försöka lösa vetenskapen med bra precision från touch med rena AD-omvandlare.
Re: Att koppla upp en touch screen
Dessutom är dessa kontrollers ofta "självkalibrerande" dvs du ställer den i kalibreringsläge, pekar på hörnen, klart.
Ut får du i regel en dataström med x och y koordinater, samt om skärmen och kontrollern klarar det även tryck.
Ut får du i regel en dataström med x och y koordinater, samt om skärmen och kontrollern klarar det även tryck.
Re: Att koppla upp en touch screen
Skall jag vara ärlig känns detta inte riktigt "rätt" som utbildningsprojekt om du är på nivån som du beskriver.
"Dock har jag i princip ingen användbar kunskap om elektroniken på denna nivå."
Jag anser att du borde sänka ambitionsnivån något, kanske dela upp projektet.
- Tända LED i vald matris
- Läsa av en ADC
- etc.
- etc.
När du har koll på alla "delmoment" så blir slutprojektet att få allt att lira ihop.
Nu kanske det var så du tänkt angripa det.
"Dock har jag i princip ingen användbar kunskap om elektroniken på denna nivå."
Jag anser att du borde sänka ambitionsnivån något, kanske dela upp projektet.
- Tända LED i vald matris
- Läsa av en ADC
- etc.
- etc.
När du har koll på alla "delmoment" så blir slutprojektet att få allt att lira ihop.
Nu kanske det var så du tänkt angripa det.
Re: Att koppla upp en touch screen
Ja, det är en väldigt bra idé att få varje del att fungera var för sig först. Om nu allt ska skötas av samma processor så blir väl första experimentet att överhuvudtaget programmera den så att en lysdiod blinkar.
Re: Att koppla upp en touch screen
Tack för svaren, jag förstår att det inte lär bli speciellt enkelt för mig att fixa ihop det här med tanke på min bristande erfarenhet och kunskap, men jag tänkte naturligtvis ta det steg för steg och se det som ett lärande projekt. Har ganska mycket att göra med plugget och extraarbete just nu, men förhoppningsvis får jag möjlighet att pyssla med det i sommar.
En annan fråga som inte är helt orelaterad till ämnet: Finns det någon "internet-krets" på marknaden? Alltså en chip som kan sända och ta emot information över tcp/ip? Jag har sett att det finns små wifi-chip, men vet inte riktigt vilken funktionalitet dessa har.
edit: Hittade den här sidan http://www.beyondlogic.org/etherip/ip.htm , verkar finnas ett utbud iallfall. Och ja, jag vet att jag har vatten en kilometer upp över öronen nu, men man får ju fantisera
En annan fråga som inte är helt orelaterad till ämnet: Finns det någon "internet-krets" på marknaden? Alltså en chip som kan sända och ta emot information över tcp/ip? Jag har sett att det finns små wifi-chip, men vet inte riktigt vilken funktionalitet dessa har.
edit: Hittade den här sidan http://www.beyondlogic.org/etherip/ip.htm , verkar finnas ett utbud iallfall. Och ja, jag vet att jag har vatten en kilometer upp över öronen nu, men man får ju fantisera

Re: Att koppla upp en touch screen
Ja, det där med internetkrets är ju en våt dröm.... men när ska man nånsin få tid att sätta sig in i det??? Det förblir nog en dröm för min del några månader till... eller år...
Re: Att koppla upp en touch screen
Okej, nu tänkte jag försöka dra igång med det här så smått... Ska börja med att försöka igång en fungerande kontrollerbar ledmatris.
Hur funkar det här forumet, ska jag fortsätta här eller starta en ny tråd i projekt?
Hur funkar det här forumet, ska jag fortsätta här eller starta en ny tråd i projekt?
Re: Att koppla upp en touch screen
Beträffande nätverkskretsar så finns det ett par stycken på marknaden som lämpar sig för uControllers.
Det finns också mer eller mindre färdiga moduler.
Har jobbat en del med de rena controllerkretsarna, dvs de som i vanligt tal kallas mör MAC+PHY, dock aldrig med de färdiga modulerna.
Tror nog att du får öva och träna lite mer innan du ger dig på dessa, då TCP/IP stacken mm, inte är helt trivial.
Det finns också mer eller mindre färdiga moduler.
Har jobbat en del med de rena controllerkretsarna, dvs de som i vanligt tal kallas mör MAC+PHY, dock aldrig med de färdiga modulerna.
Tror nog att du får öva och träna lite mer innan du ger dig på dessa, då TCP/IP stacken mm, inte är helt trivial.
- Klas-Kenny
- Inlägg: 11838
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
Re: Att koppla upp en touch screen
Projektdelen fungerar som så att du skriver och berättar om ditt projekt, samt skriver uppdateringar om hur det går osv. samt någon fråga ibland fungerar väl bra, men ifall det handlar om att du bara ska skriva frågor om hur du ska gå till väga känns inte projekt som rätt kategori.
Men, känner du att du har kommit någonstans i ditt projekt som du vill dela med dig av, så skapa gärna en projekttråd
Men, har du fler frågor tycker jag du borde hålla dig till denna tråd.
Men, känner du att du har kommit någonstans i ditt projekt som du vill dela med dig av, så skapa gärna en projekttråd

Men, har du fler frågor tycker jag du borde hålla dig till denna tråd.