Light to frequency

Hallo,

also man sollte bei der Schaltungsentwicklung auch den Reset/Boot-Zustand mit berücksichtigen. Wenn der Atmel startet sind alle Pins im hochohmigen Zustand (TriState) und die PullUps sind alle abgeschaltet. Wenn man also eine Hardware dran hat die dann eventuell Amok laufen könnte dann sollte man auf jeden Fall über einen externen normalen Widerstand entweder einen PullUp oder PullDown so anlegen das diese Hardware bis zur vollständigen Initialisierung der Ports deaktiviert ist.

Das habe ich zB im Moment bei mir bei LED-Treibern. Die PWM-Leitung und die Enable-Leitung muß mit Widerständen in einen definierten Zustand gebracht werden damit beim Einschalten nicht alles mit voller Kraft losleuchtet (würde blöd aussehen).

Gruß
Dino
 
Der Pullup ist also so zu wählen, daß er das Netz ausreichend schnell auf einen hi-Pegel bringen kann (klein genug), andererseits aber auch den Strom durch den AVR-Pin ausreichend begrenzen kann(groß genug). Abgesehen davon brauchst Du den Pullup sicher auch nicht als Heizung auf der Platine...

Welchen Wert man dann tatsächlich nutzt, ist das ein Erfahrungswert, oder kann man den berechnen?
 
Hallo,

also man sollte bei der Schaltungsentwicklung auch den Reset/Boot-Zustand mit berücksichtigen. Wenn der Atmel startet sind alle Pins im hochohmigen Zustand (TriState) und die PullUps sind alle abgeschaltet. Wenn man also eine Hardware dran hat die dann eventuell Amok laufen könnte dann sollte man auf jeden Fall über einen externen normalen Widerstand entweder einen PullUp oder PullDown so anlegen das diese Hardware bis zur vollständigen Initialisierung der Ports deaktiviert ist.

Das habe ich zB im Moment bei mir bei LED-Treibern. Die PWM-Leitung und die Enable-Leitung muß mit Widerständen in einen definierten Zustand gebracht werden damit beim Einschalten nicht alles mit voller Kraft losleuchtet (würde blöd aussehen).

Gruß
Dino

Ja, das leuchtet ein.
 
Der Chip hat noch vier Pins für Empfindlichkeit und Frequenzteiler. Wenn ich die fest auf low oder high legen will, dann brauch ich doch keine Widerstände oder? Ich weiß nicht, wie ich mir in solchen Dingen jemals sicher werde. Ich denke oft genug einfach falsch. Sorry für die Frage!
 
Hallo,

Der Chip hat noch vier Pins für Empfindlichkeit und Frequenzteiler. Wenn ich die fest auf low oder high legen will, dann brauch ich doch keine Widerstände oder? Ich weiß nicht, wie ich mir in solchen Dingen jemals sicher werde. Ich denke oft genug einfach falsch. Sorry für die Frage!
das ist eigentlich recht einfach ;) (das sagt sich so schnell :rolleyes:)

Unbenutzte Eingänge sollten bei ICs auf einen definierten Pegel gebracht werden damit sie nicht irgendeinen Schmutz einfangen. Wie das zu machen ist, das steht normalerweise im Datenblatt.

Bei einem Atmel aktiviert man bei einem unbenutzten IO-Pin einfach den PullUp. Der Pin muß dafür natürlich auch auf Eingang geschaltet werden. Der interne PullUp sorgt dafür das der Atmel nicht unnötig viel Strom zieht (LowPower und sowas). Das steht aber genau im Datenblatt.

Bei LCD-Displays muß man bei einem 4Bit-Betrieb auf die Bit0-3 auf GND legen damit der entsprechende Pegel anliegt. Dafür kann man die einfach direkt auf GND legen. Man kann aber auch 1kOhm Widerstände nehmen damit die IO-Pins geschützt sind für den Fall das man mal was vom LCD abfragt. Das kommt aber normalerweise beim 4Bit-Betrieb nicht vor da der Read/Write-Pin über direkten Anschluß an GND so eingestellt ist das das LCD nur Daten annehmen kann aber nix rausgibt.

Manche ICs haben intern auch Widerstände an den Pins verbaut um einen definierten Pegel zu erzeugen. Das steht dann auch im Datenblatt drin.

Wie empfindlich Eingangspins sind kannst du zB mal folgendermaßen sehen ...

Schreib eine kleine Endlosschleife in der du das PIN-Register eines Ports (zB PINC) auf das PORT-Register eines anderen (zB PORTD) schreibst. Vorher natürlich PORTD mit DDRD=&HFF komplett auf Ausgang schalten. Dann leg mal ein paar Leuchdioden an den PORTD (über Vorwiderstand natürlich :rolleyes:) Wenn du nun mit dem Finger an die Pins PC0..7 rumfummelst dann wirst du dein blaues Wunder erleben. Die Eingänge reagieren wie Sensortasten. Die Eingänge sind intern über Schutzdioden gegen zu hohe Spannungen geschützt. Aber über den Teppich schlurfen sollte man trotzdem nicht. Das könnte dann doch etwas viel sein.

Gruß
Dino
 
Welchen Wert man dann tatsächlich nutzt, ist das ein Erfahrungswert, oder kann man den berechnen?
Klar kann man das alles berechnen, wenn man sich mit den Eingangskapazitäten derr Pins und so rumschlagen will.
Ein Pullup verbindet das Netz mit der positiven Versorgungsspannung; wenn ein IC jetzt das Netz auf Gnd bringt, fließt Strom. Wieviel? Grob(!) überschlagen kann man mit dem Ohmschen Gesetz rechnen R=U/I, wobei U die Versorgungsspannung, und I der max zulässige Strom durch den IC-Pin ist. (Der eventuelle Spannungsabfall am Schaltglied im IC verringert nochmal die Spannung(sdifferenz Versorgungsspannung-Gnd), aber für den Überschlag ist das egal.) Der erhaltene Widerstand ist dann der kleinste (mit etwas Reserve, siehe oben) Wert, den der IC verträgt.
Solange man keine Kommunikationsleitungen hat, liegt man eigentlich mit 4,7 oder10 kOhm ganz gut. Bei Netzen die den Pegel schnell wechseln können müssen (und wo nur der Pullup für den Hi-Pegel sorgt), beeinflußt der Widerstand natürlich die Steilheit dieser Flanke (da er ja den Strom begrenzt, mit dem alle am Netz hängenden Kapazitäten hochgeladen werden müssen, bis das Netz auf logisch Hi liegt).
 
Also was meinen TSL230 angeht, so steht da nur, daß alle Pins TTL kompatibel sind. Ich verbinde damit lediglich bestimmte Pegel für low und high. Ob das auch implizit klärt, wie man einzelne Pins auf einen definierten Wert legt oder wieviel Strom die vertragen? Wenn man so googelt nach diesem Begriff, dann findet man auch eine Menge unterschiedliches Zeugs.
 
Hallo,

Solange man keine Kommunikationsleitungen hat, liegt man eigentlich mit 4,7 oder10 kOhm ganz gut. Bei Netzen die den Pegel schnell wechseln können müssen (und wo nur der Pullup für den Hi-Pegel sorgt), beeinflußt der Widerstand natürlich die Steilheit dieser Flanke (da er ja den Strom begrenzt, mit dem alle am Netz hängenden Kapazitäten hochgeladen werden müssen, bis das Netz auf logisch Hi liegt).
kann man nehmen.

Wenn aber bei 5V Vcc ein 4,7k PullUp da ist und der Pin wird irgendwodurch (Taster, Ausgang anderes IC, ...) auf GND gezogen, dann fließen da schon 1mA.

Also der PullUp im Atmel liegt irgendwo bei 50kOhm. Bei hochohmigen Eingängen liegen die PullUps bei mir auch in dem Bereich von 22k bis 100k (je nach Gefühl). Bei niederohmigen (TTL-ICs wie zB 74xx) nehme ich so 4,7k bis 22k (nach Gefühl). Eingänge mit niedrigen Frequenzen benötigen nicht so niederohmige PullUps wie Eingänge mit hohen Frequenzen. Wenn die Eingänge mit SchmittTrigger ausgestattet sind (zB 7414) dann kann man auch wieder etwas höher gehen weil die Flankensteilheit dann nicht ganz so kritisch ist.

Berechnen tue ich die aber nicht.

Gruß
Dino
 
Und was ist mit TTL? Sagt das irgend was verläßliches über die IO-Pins?
 
Hi,

Und was ist mit TTL? Sagt das irgend was verläßliches über die IO-Pins?
:confused: also die Frage versteh ich jetzt nicht ganz :confused:

TTL heiß Transistor-Transistor-Logik. Das sind ICs mit bipolaren Transistoren drin. Also die älteren Logik-ICs. Die benötigen meißt etwas mehr Strom am Eingang.

Die neueren ICs mit CMOS-Technik benötigen weniger Strom am Eingang. Dafür muß man aber im Umschaltzeitpunkt (High->Low oder Low->High) die Gates der Eingangstransistoren umladen was einen kurzzeitigen höheren Stromfluß am Eingang benötigt. Danach ist der Eingang wieder sehr hochohmig.

Gruß
Dino
 
:confused: also die Frage versteh ich jetzt nicht ganz :confused:

Das bezog sich auf die Frage, wie man bei TTL unbenutzte Eingänge behandelt und Deine Aussage:

dino03 schrieb:
Unbenutzte Eingänge sollten bei ICs auf einen definierten Pegel gebracht werden damit sie nicht irgendeinen Schmutz einfangen. Wie das zu machen ist, das steht normalerweise im Datenblatt.

Bei mir steht halt nur TTL-kompatibel.
 
Hallo,

Bei mir steht halt nur TTL-kompatibel.
TTL-kompatibel heißt nicht das es TTL ist. Das heißt nur das der Eingang oder Ausgang mit den Pegeln von einem TTL-IC was anfangen kann oder eins treiben kann. Die Logik-Pegel passen also und die Last eines TTL-Eingangs kann getrieben werden.

Gruß
Dino
 
Adapterplatine

Ich versuche eine Adapterplatine zu machen, damit ich den TSL230RD in einen normalen 8er IC-Sockel bekomme. Allerdings bin ich vom Ergebnis noch nicht unbedingt überzeugt.
Clipboard01.gif
Die Leiterbahnen sind sehr dünn (0,32mm), reicht das?
Die Abstände der Bahnen 7 bzw. 3 zu den anderen Leiterbahnen sind teilweise noch geringer.
Gibt es noch ein günstigeres Layout?

Wolfgang
 
Wieviel Strom willst Du denn durchjagen? Rechnerisch sollten die 0,32mm (bei 25°C, max. Temperhöhung 0,5K, 35µm Cu Außenlage) bis 280mA gehen. Würde ich aber nicht ausreizen...
Zur Isolationsbreite: welche Spannungen gehen denn drüber?

Die hier kennst Du?
 
Wieviel Strom willst Du denn durchjagen? Rechnerisch sollten die 0,32mm (bei 25°C, max. Temperhöhung 0,5K, 35µm Cu Außenlage) bis 280mA gehen. Würde ich aber nicht ausreizen...
Zur Isolationsbreite: welche Spannungen gehen denn drüber?

Die hier kennst Du?

Da gibt es leider keinen 8-Pin Adapter. Zu dem TSL: Der wird mit 5V/3mA betrieben.
 
Hallo,

beim umstellen auf einen anderen MC (ATmega1284P) ist mir ein Fehler in meinem letzten Code aufgefallen. Ich verstehe immer noch nicht, warum mir das nicht schon früher (an den Werten) aufgefallen ist.

Ich will das hier korrigieren:

Meine CPU-Frequenz beträgt 19,6608 MHz.
Als Zähler benutze ich Timer 1 (16 Bit).
Für mein Messintervall benutze ich Timer 2 (8 Bit) mit einem Vorteiler von 1024. Das sind 13 1/3 ms.
Wenn ich nun meinen Timer2-Overflow 5 mal zähle, dann liege ich bei 66 2/3 ms (dh. 1/15s).
Innerhalb dieser Zeit komme ich bei einer Maximalfrequenz meines Lichtsensors von 1MHz auf ~67000 Impulse so daß 17 Bits (TCNT1L + TCNT1H + TOV1) ausreichen sollten.

Im Anschluß daran erfolgt noch eine Multiplikation mit 15 und ich habe meine Frequenz.

Hier der Code:

Code:
    	ldi	temp1, 1<<TOIE2			; enable timer2 interrupt
    	sts	TIMSK2, temp1
     	sei

     	rcall	GetLightFreq

     	ldi	temp1, 0				; disable timer2 interrupt
     	sts	TIMSK2, temp1
     	cli

	ldi	temp1, 15				; *15
	mul	freqL, temp1
	movw	tempL, R0

	mul	freqH, temp1
	add	tempH, R0
	brcc	noc
	inc	R1

noc:	mov	temp2, R1
	mul	freq3, temp1
	add	temp2, R0

; Ergenis steht jetzt in: temp2:tempH:tempL 24 Bit (µW/cm²)

	...
Doit:
    	jmp	Doit

GetLightFreq:
	cbi	PORTB, TSL_ce				; TSL einschalten
	ldi	temp1, 5				; Timer 2 Ovfl-Counter
	mov	freqC, temp1
    	clr	temp1
    	sts	TCNT2, temp1				; Timer 2 löschen
	sts	TCNT1H, temp1				; Timer 1 löschen
    	sts	TCNT1L, temp1
    	ldi	temp1, 1<<CS12 | 1<<CS11 | 1<<CS10	; T1=PB1 steigende Flanke
    	sts	TCCR1B, temp1
   	ldi	temp1, 1<<CS22 | 1<<CS21 | 1<<CS20	; Vorteiler 1024
	sts	TCCR2B, temp1
    	set
WaitTSL:
    	brts	WaitTSL
    	clr	temp1					; beide Timer ausschalten
    	sts	TCCR1B, temp1
	sts	TCCR2B, temp1
	sbi	PORTB, TSL_ce				; TSL ausschalten
    	ret

T2ovfl:
	in	SregSave,SREG 			; Statusregister sichern
	dec	freqC
	brne	T2oGoon
    	lds	freqL, TCNT1L				; Zähler sichern
    	lds	freqH, TCNT1H
	in	temp1, TIFR1
	sbrc	temp1, TOV1				; Bit 17
	sbi	TIFR1, TOV1				; Overflow löschen
	andi	temp1, 1	
	mov	freq3, temp1
	out	SREG, SregSave
	clt						; Fertig signalisieren
	reti
T2oGoon:
	out	SREG, SregSave
    	reti

Ich hoffe, daß jetzt alles richtig ist!

Gruß, Wolfgang
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)