Har en knappsats i en bil jag försöker läsa av analogt med en arduino men kör lite fast pga bristande kunskap.
Invändigt fungerar knappen enligt schemat till vänster, något förenklat.
Nuvarande inkoppling är enligt högra schemat där övre motståndet är för spänningsdelning.
Har tyvärr ingen bra bild på knappsatsen invändigt men verkar fungera snarlikt detta, dvs en gummi yta med någon sorts beläggning som sluter kretsen när den trycks ner mot kretskortet.
För att läsa av detta med en arduino har jag använt en spänningsdelare och ska då få ut 0V, 0.12V, 1.73V och 4.8V.
Dock på grund av "brus" eller snarare ojämnt motstånd i knappsatsen beroende på väder, vind, temperatur, planeternas position och så vidare så svajjar dessa värden rejält.
Min nuvarande approach är ganska simplistisk, att försöka fånga ett intervall med en IF loop och därefter bestämma vad utsignalen ska göra.
Problemet uppstår att pga 0 och 0.12V har så liten marginal och knappsatsen är lynnig så kan dom gränserna flyta omkring så pass mycket att dom går om varandra.
Dvs ibland läser arduinon av 0.04V när den bör få 0.12V och tror att det är 0V nivån som är aktiverad och vice versa ... Dom högre nivåerna verkar vara tillräckligt "långt emellan" för att inte få samma problem.
Dom 8V som kretsen förses med är stabilt så allt "svaj" kommer från knappsatsen och dess inre motstånd är svåra/omöjliga att göra något åt.
Finns det något smartare sätt att hantera detta på än en enkel spänningsdelare?
På något sätt får dom det att fungera bra i den ursprungliga tillämpningen så rimligtvis är det något jag missar/inte vet om.
Hade varit mycket tacksam för tankar och idéer!
Hjälp med att läsa av analoga signaler
Hjälp med att läsa av analoga signaler
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
- Klas-Kenny
- Inlägg: 11505
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
Re: Hjälp med att läsa av analoga signaler
Det är ju tre knappar, men fyra olika nivåer?
Vad är det som gör 0 ohm till jord?
Som jag förstår borde du inte behöva särskilja 0 och 0.12V, utan kan snarare se det som "Allt under 0.5V innebär att knappen med 30 ohm är intryckt".
Edit: Eller det är fyra knappar? Den på bilden är inte likadan som din..?
Om så är fallet, prova att byta 2k motståndet till tex. 470 ohm så får du kanske något trevligare spänningsnivåer. Sen är nog 8V olämpligt, inte helt snällt mot Arduinon när du inte trycker ned någon knapp. Antar att den tål max 5V...
Vad är det som gör 0 ohm till jord?
Som jag förstår borde du inte behöva särskilja 0 och 0.12V, utan kan snarare se det som "Allt under 0.5V innebär att knappen med 30 ohm är intryckt".
Edit: Eller det är fyra knappar? Den på bilden är inte likadan som din..?
Om så är fallet, prova att byta 2k motståndet till tex. 470 ohm så får du kanske något trevligare spänningsnivåer. Sen är nog 8V olämpligt, inte helt snällt mot Arduinon när du inte trycker ned någon knapp. Antar att den tål max 5V...
Re: Hjälp med att läsa av analoga signaler
Schemat blir nog lite missvisande, tänkte inte på det.
Knappen är till fönsterhissarna och har därmed 2 nivåer "ned", neutralt imellan(finns inte i skissen) och två nivåer upp.
Dumt nog ligger nivåerna inte i den ordningen utan längst ner är 0V och första nivån upp är 0.11V, vilket såklart ställer till det.
4 läges-switchen är därmed dom 4 olika nivåerna som knappen kan tryckas i.
Knappen är till fönsterhissarna och har därmed 2 nivåer "ned", neutralt imellan(finns inte i skissen) och två nivåer upp.
Dumt nog ligger nivåerna inte i den ordningen utan längst ner är 0V och första nivån upp är 0.11V, vilket såklart ställer till det.
4 läges-switchen är därmed dom 4 olika nivåerna som knappen kan tryckas i.
- Synesthesia
- Inlägg: 631
- Blev medlem: 22 januari 2010, 19:14:10
- Ort: Mellan Göteborg och Kungsbacka
Re: Hjälp med att läsa av analoga signaler
Du skulle behöva lägre värde på R8 för att se skillnad på 30Ω och 0Ω, men då blir det svårare med de högre värdena istället.
Eller du skulle kunna ha en ytterligare "pullup" med lägre värde från en lägre spänning genom en diod, då från en spänning som (inklusive diod) ligger under den som blir när du trycker 560Ω.
Eller du skulle kunna ha en ytterligare "pullup" med lägre värde från en lägre spänning genom en diod, då från en spänning som (inklusive diod) ligger under den som blir när du trycker 560Ω.
Re: Hjälp med att läsa av analoga signaler
Klas-kenny: Sorry mitt förra svar gick lite fort.
Problemet är att så som knappen fungerar så har den bakgrundsbelysning som har 8V, och detta går genom knappsatsen invändigt som sen jordar någon av dom 4 lägena.
Hade inte ens tänkt på att den pga pullup får 8V, verkar funka än så länge.
Mycket riktigt så är den på bilden inte samma, utan bara för att visa på "typen" av konstruktion, om det spelar roll för att den är så svajjig.
Halverade jag R8 så skiljer det 0.233V istället för 0.118V så blir i princip hälften så svårt att se skillnaden där, kanske räcker. Får lite överspänning med R6 på 5.2V men uppenbarligen verkar 8V på analog in funka, för stunden.
Får programmera om på något sätt om jag ska köra så. För nuvarande anses knappen vara opåverkad om den ger 1023 som analogt värde men det kommer då även ske vid bruk av R6.
Synesthesia: Den lösningen var riktigt spännande!
Har bara testat lite grann men ..
5V med diod och 220ohm motstånd.
8V med 1.5k motstånd.
Ger nivåerna 0V, 0.64V, 3.55V, 4.45V.
Något hög ström på 24.7mA om den analoga ingången nu låter ström flöda eller beter dom sig när man mäter spänning med multimeter?
Testade med 2.5V+diod dvs 1.8 någonstans.
0V, 0.53V, 2.15V och 4.43V
Ger nog bäst marginal åt alla håll än så länge.
Problemet är att så som knappen fungerar så har den bakgrundsbelysning som har 8V, och detta går genom knappsatsen invändigt som sen jordar någon av dom 4 lägena.
Hade inte ens tänkt på att den pga pullup får 8V, verkar funka än så länge.
Mycket riktigt så är den på bilden inte samma, utan bara för att visa på "typen" av konstruktion, om det spelar roll för att den är så svajjig.
Halverade jag R8 så skiljer det 0.233V istället för 0.118V så blir i princip hälften så svårt att se skillnaden där, kanske räcker. Får lite överspänning med R6 på 5.2V men uppenbarligen verkar 8V på analog in funka, för stunden.
Får programmera om på något sätt om jag ska köra så. För nuvarande anses knappen vara opåverkad om den ger 1023 som analogt värde men det kommer då även ske vid bruk av R6.
Synesthesia: Den lösningen var riktigt spännande!
Har bara testat lite grann men ..
5V med diod och 220ohm motstånd.
8V med 1.5k motstånd.
Ger nivåerna 0V, 0.64V, 3.55V, 4.45V.
Något hög ström på 24.7mA om den analoga ingången nu låter ström flöda eller beter dom sig när man mäter spänning med multimeter?
Testade med 2.5V+diod dvs 1.8 någonstans.
0V, 0.53V, 2.15V och 4.43V
Ger nog bäst marginal åt alla håll än så länge.
Re: Hjälp med att läsa av analoga signaler
Uppdaterat schemat en del.
5 positions switch så det återspeglar verkligheten bättre. Ingen kontakt, 0, 30, 550 och 1870 ohm.
R9 agerar pulldown och ser till att A0 inte ser mer än ca 5.3V om knappen är opåverkad.
D1 och R7 drar upp nivåerna för R4 enligt Synesthesias förslag.
Testat lite värden fram och tillbaka och detta verkar rätt ok.
Ger 0V, 0.57V, 2.4V och 3.9V, tappar lite på toppen pga min pulldown men intervallen emellan varje steg bör vara goda nog.
5 positions switch så det återspeglar verkligheten bättre. Ingen kontakt, 0, 30, 550 och 1870 ohm.
R9 agerar pulldown och ser till att A0 inte ser mer än ca 5.3V om knappen är opåverkad.
D1 och R7 drar upp nivåerna för R4 enligt Synesthesias förslag.
Testat lite värden fram och tillbaka och detta verkar rätt ok.
Ger 0V, 0.57V, 2.4V och 3.9V, tappar lite på toppen pga min pulldown men intervallen emellan varje steg bör vara goda nog.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.