Hur fungerar digitalRead() på arduino?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Walle
Moderator
Inlägg: 7701
Blev medlem: 14 december 2004, 10:32:18
Ort: Stockholm

Re: Hur fungerar digitalRead() på arduino?

Inlägg av Walle »

Al_Bundy skrev:
jesse skrev: Tyvärr så har du fel. Det handlar inte alls om att klara kurserna.
Det handlar om att förstå och vara intresserad av det innehåll som lärs ut på kurserna. Det är något helt annat än att "klara kurserna".
Om du bara är ute efter att klara kurserna så kommer du att få det svårt framöver.
Jag har bra betyg och ger mycket i skolan.
Men om du har rätt så har alla mina lärare (doktorsexamen, docenter) fel.
Gå du och fråga dina lärare om de anser att det viktiga är att man "klarar kurserna" eller om det viktiga är att man faktiskt förstår och tar till sig kunskapen. Jag kan garantera dig att INGEN kommer påstå att utbildningen går ut på att "klara kurserna"! De som har tagit doktorsexamen (eller högre examen) har garanterat inte gjort det genom att "klara kurserna"!

Egentligen borde väl det här inte diskuteras i ytterligare en tråd, men det är så smärtsamt att se hur fullkomligt fel du är ute, speciellt eftersom man förstår att du kommer ångra det så bittert i framtiden.
GFEF
Inlägg: 2383
Blev medlem: 4 december 2004, 18:44:04

Re: Hur fungerar digitalRead() på arduino?

Inlägg av GFEF »

När man läser denna tråd och andra skapad av samma person.
Kan jag låta bli att tänka på ordspråket.

"Går att leda en häst till vatten, men inte tvinga den att dricka"

Vill man inte lära sig att tillämpa grundläggande elektriska begrep är det fullständigt meningslöst att försöka svar på frågor från denna person.

Att prova ut ström - spänning genom en billig lysdiod i stället för slösa bort andras och egna tid med ställa frågor om grundläggande begrep.

Mest nödvändiga utrustning elektronik labb på egenhand är:

Universal instrument, ställbart nätaggregat och kopplingsdäck.

Naturligtvis behövs de komponenter som skall provas ut.
Motstånd, lysdioder med mera.

Koppla upp en billig lysdiod i serie med ett motstånd.
Mät strömmen med Ohms lag
Motståndets uppmätta värde och spänningsfallet över det ger strömmen.
Prova med ändra spänningen och olika storlekar på motståndet.

Kommahåg att inte överskrid lysdioden max ström....
Börja med låg spänningen och stort motstånd.
Öka strömmen till max värdet för lysdioden.
Användarvisningsbild
adent
Inlägg: 4245
Blev medlem: 27 november 2008, 22:56:23
Ort: Utanför Jönköping
Kontakt:

Re: Hur fungerar digitalRead() på arduino?

Inlägg av adent »

Ett enkelt svar på din fråga:

Ingången på processorn känner i princip bara av en spänning, ingen ström går den vägen (detta är nog det du behöver veta för att kunna gå vidare med ohms lag), varken in eller ut. (detta är inte helt sant, återkommer om det sen).

Det jag hade lite svårt att förstå när jag lärde mig detta en gång var just att när knappen trycks in så kommer det att gå ström (fast väldigt lite) från +5V till Jord, via motståndet, vilket känns onödigt, varför slösa ström? Eftersom ingången varken drar eller ger ström är den väldigt känslig. så ansluter man den inte till någonting så kan en digitalRead() ge 1 eller 0 mer eller mindre slumpmässigt.

Ett annat sätt att koppla är att sätta knappen mellan processorns ingång och GND utan motstånd och sedan ansluta motståndet mellan processorns ingång och +5V. Intryckt knapp ger nu 0:a och uppsläppt ger 1:a. När knappen är släppt så ser ingången +5V genom motståndet. Eftersom i princip ingen ström går genom motståndet i detta läge kommer det vara +5V på ingången också.

Nu kan du prova att ta bort motståndet så ser du att resultatet blir väldigt knasigt (som du redan har märkt). Sen kan du prova att slå på den interna pull-up:en i AVR:en (Arduionon), googla det.

MVH: Mikael
bearing
Inlägg: 11676
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Hur fungerar digitalRead() på arduino?

Inlägg av bearing »

sodjan skrev:> ...men de minuter jag provat verkar inte ha orsakat något fel på mina kretsar.

Jag kan garantera att du inte har en susning om det! Du har kört utanför
specifikationerna och kretsen är helt enkelt inte att lita på längre. Vad som
något "verkar" är ointressant.
Du kan garantera att jag inte har en susning om det?
Vilket värde finns det i att du uttrycker dig på det sättet?
Dels är det fel, och dels upplever jag dig som väldigt otrevlig!

Uppenbarligen förstår jag att det kan finnas latenta fel i mina kretsar. Det är ju därför jag uttrycker mig något försiktigt, d.v.s skriver att det "verkar som att" kretsarna fungerar som de ska, inte "att" de fungerar som de ska.
sodjan skrev:Nej, det är så som CMOS fungerar rent generellt. Om det inte handlar om
direkta "power" komponenter så är det normalt och inte "by design".
Vad är det du säger?
Att CMOS generellt ger max 80mA vid 5V?
Nej, jag tror att den som gjort utgången på dessa Atmelkretsar har utformat transistorerna så att de hamnar på den här nivån, som är en kompromiss mellan hög drivkapacitet, och tillräckligt låg kortslutningsström för att intermittenta felkopplingar inte ska sabba kretsen.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Hur fungerar digitalRead() på arduino?

Inlägg av sodjan »

> Du kan garantera att jag inte har en susning om det?

Ja. Att utsätta kretsen för något utanför "Abs max" kan ge interna
fel som inte syns vid en enkel kontroll.

Det är dessutom ganska tveksamt att över huvudtaget ta upp en sådan
sak i en tråd från någon som uppenbarligen saknar förmåga att ta
till sig grundläggande elektronik.

> Vad är det du säger?
> Att CMOS generellt ger max 80mA vid 5V?

Jag säger att småsignal-CMOS får dessa egenskaper "by default".
Det är inte "by design" som något slags avsiktligt skydd. Att det
var/blev just 80mA i ditt fall var så klart mer en tillfällighet.

Man som sagt, att alls diskutera drift "out of spec" är fel, speciellt
i denna tråd och med denna trådskapare. Helt onödigt...
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Hur fungerar digitalRead() på arduino?

Inlägg av jesse »

Om man öppnar en kapsel med valfri Atmel-processor och tittar på chippet i mikroskop så ser man att transistorparen vid utgången är betydligt större än de interna. Just för att de är utgångar som är specialdesignade för att driva mer ström. De interna transistorerna är extremt små i jämförelse med dessa. Nu gäller ju samma sak för övriga CMOS-kretsar, så det är ju ganska generellt. Men varje kretsfamilj har ju sina egna specifikationer på utgångarna, allt efter hur man valt att designa dem. Så jag tycker väl att det är "per design" , även om just Atmels AVR-utgångar inte är så unika att man precis höjer på ögonbrynen.

Så det är väl inget att bråka om egentligen, de är både "per design" och ganska generella CMOS-utgångar på samma gång.
Skriv svar