Forum: Mikrocontroller und Digitale Elektronik ATTINY 13 schaft gerade mal 1kHz als Schmitt-Trigger?


von Henry (Gast)


Lesenswert?

Hallo

Gebe auf einen Analog- Eingang eines ATTINY 13 eine Sinusspannung Ue < 
2,5 Vss, Offset: 2,5 VDC und schalte einen Ausgang beim Über-/ 
Unterschreiten eines festen Grenzwertes Ug.
Das geht sauber bis 100 Hz.  Bei ca. 1 kHz sind die Ausgangs- Flanken 
(Last 1 kOhm)schon ziemlich rund und darüber unbrauchbar. Im Datenblatt 
steht was von 250kHz?

von Dave C. (dave_chappelle)


Lesenswert?

Schaltung und Code?
Und vor allem: Taktquelle?
Wenn dein Tiny mit interner Taktquelle von iwie 32kHz läuft dann wird
das nichts.

von Peter II (Gast)


Lesenswert?

Henry schrieb:
> Das geht sauber bis 100 Hz.  Bei ca. 1 kHz sind die Ausgangs- Flanken
> (Last 1 kOhm)schon ziemlich rund und darüber unbrauchbar. Im Datenblatt
> steht was von 250kHz?

warum sollte sie die Flanke abhänig von der Frequenz ändern? die 
Flankensteiheit ist doch immer gleich, auch wenn du 1mal pro Stunde 
schaltest.

von Ingo (Gast)


Lesenswert?

Henry schrieb:
> Bei ca. 1 kHz sind die Ausgangs- Flanken
> (Last 1 kOhm)schon ziemlich rund und darüber unbrauchbar.

Die Flanken am Ausgang des AVRs sind natürlich irgendwo in der 
Flankensteilheit begrenzt. Aber 1kHz sollte locker drin sein!


Ingo

von Peter D. (peda)


Lesenswert?

Da er mit 20MHz getaktet werden kann, muß eine Flanke <50ns sein.
Das Datenblatt schweigt sich leider aus.

Mit dem ADC hat das überhaupt nichts zu tun.

von Ingo (Gast)


Lesenswert?

Peter Dannegger schrieb:
> Mit dem ADC hat das überhaupt nichts zu tun.
Wenn seine Auswerteroutine für den ADC schlecht ist kann das auch 
Schwingen sein, das er mit dem Oszi einfach nicht stark genug auflöst!

von Ingo (Gast)


Lesenswert?

Auch ein digitaler Komparator sollte ne kleine Hysterese haben!

von Falk B. (falk)


Lesenswert?

Ausgangspin auch als Ausgang definiert?

DDRx = ...

von Peter D. (peda)


Lesenswert?

Ingo schrieb:
> Schwingen sein, das er mit dem Oszi einfach nicht stark genug auflöst!

Unterabtastung erkennt man ganze leicht daran, daß ein Signal scheinbar 
nicht triggert.

von Henry (Gast)


Angehängte Dateien:

Lesenswert?

Verwende internen Takt.
Beigefügt mal 2 Screen- Shoots.

von Peter II (Gast)


Lesenswert?

Henry schrieb:
> Verwende internen Takt.
> Beigefügt mal 2 Screen- Shoots.

prüfen mal wie schon  Falk Brunner geschrieben hat, ob der pin wirklich 
aus ausgang gesetzt ist. Am besten gleich mal den quellcode posten.

von MWS (Gast)


Lesenswert?

Peter II schrieb:
> prüfen mal wie schon  Falk Brunner geschrieben hat, ob der pin wirklich
> aus ausgang gesetzt ist.

Wenn er das nicht wäre, dann würde kein Vss von 5V auf dem Oszibild zu 
sehen sein, dann wären das noch um die 0,3-0,4V.

Henry schrieb:
> Last 1 kOhm)schon ziemlich rund

Sieht wie 'ne dicke kapazitive Last aus.

von Axel S. (a-za-z0-9)


Lesenswert?

Henry schrieb:

> Gebe auf einen Analog- Eingang eines ATTINY 13 eine Sinusspannung Ue <
> 2,5 Vss, Offset: 2,5 VDC und schalte einen Ausgang beim Über-/
> Unterschreiten eines festen Grenzwertes Ug.

Ein bisschen detaillierter hätte die Beschreibung schon sein dürfen. 
Also laß mich raten, was du tust.

1. du konfigurierst den ADC für den free running mode und läßt ihn so 
permanent die Spannung an deinem Eingangspin messen

2. dein Hauptprogramm ist eine Endlosschleife:

a) warten daß der ADC eine Wandlung fertig hat
b) ADC-Wert lesen
c) wenn ADC-Wert > X, dann Ausgangspin=H, sonst Ausgangspin=L

Richtig so? Dann wäre zuerst mal zu sagen, daß das kein 
Schmitt-Trigger ist, weil der nämlich zwei Schaltschranken hätte.
Aber das nur am Rande.

> Das geht sauber bis 100 Hz.  Bei ca. 1 kHz sind die Ausgangs- Flanken
> (Last 1 kOhm)schon ziemlich rund und darüber unbrauchbar. Im Datenblatt
> steht was von 250kHz?

Keine Ahnung, was du mit 250kHz meinst. Vielleicht den ADC-Takt? Dazu 
sagt mein Datenblatt zwar 200kHz, aber sicher sagen beide Datenblätter 
übereinstimmend, daß der ADC minimal 13 solche Takte für eine Messung 
benötigt.

Bei 200kHz ADC-Takt kommt also alle 65µs (resp mit ~15kHz) ein neuer 
Wert. Und weil du 2 Schleifendurchläufe brauchst, um das Ausgangssignal 
einmal auf H und wieder zurück auf L zu setzen, kannst du so auf maximal 
~7.6kHz am Ausgang kommen.

Was du mit "runden Flanken" meinst, ist unklar. Die Flankensteilheit an 
einem Ausgang des tiny13 hängt im wesentlichen von der angeschlossenen 
Kapazität ab. Mit einigen 10pF, die man sich mit der Verdrahtung 
einhandelt, dürfte die Flankensteilheit im Bereich einiger ns liegen. 
Selbst wenn wir ganz großzügig mal 65ns annehmen, dann ist die Flanke 
immer noch 1000-mal kürzer als die kürzeste L- oder H-Zeit des 
Ausgangssignals (das ja nur alle 65µs überhaupt umschalten kann).
Da kann nix rund sein. Es sei denn, du hast da einen 1000µF Elko an 
den Ausgang des tiny13 gehängt.

Naja. Auf jeden Fall ist ein solcher "Schmitt-Trigger" unter Verwendung 
des ADC völliger Humbug, weil viel zu langsam.


XL

von Dave C. (dave_chappelle)


Lesenswert?

Alter Schwede, füg' einfach den Code hier ein und dein Problem ist in 
10min Geschichte.

von Walter S. (avatar)


Lesenswert?

MWS schrieb:
>> prüfen mal wie schon  Falk Brunner geschrieben hat, ob der pin wirklich
>> aus ausgang gesetzt ist.
>
> Wenn er das nicht wäre, dann würde kein Vss von 5V auf dem Oszibild zu
> sehen sein, dann wären das noch um die 0,3-0,4V.

wenn es ein Eingang ist, gibt es auch noch den Pullup mit dem man schon 
die Betriebsspannung erreicht (nach einiger Zeit)

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Axel Schwenke schrieb:
> Naja. Auf jeden Fall ist ein solcher "Schmitt-Trigger" unter Verwendung
> des ADC völliger Humbug, weil viel zu langsam.

Ich dachte auch immer, das gerade für solche Fälle der Analog Comparator 
des Tiny13 gedacht ist. Eine wählbare Triggerschwelle könnte man dann 
immer noch mit PWM und einem RC Glied bauen.
Aber ich möchte sehen, mit was der TE den Ausgang belastet.

von MWS (Gast)


Lesenswert?

Walter S. schrieb:
> wenn es ein Eingang ist, gibt es auch noch den Pullup mit dem man schon
> die Betriebsspannung erreicht (nach einiger Zeit)

Das müsstest Du jetzt erklären...

Ist der Pin auf Eingang High und geht der Lastwiderstand gegen GND, so 
bildet er mit dem internen Pullup einen Spannungsteiler, ist der Pin 
Eingang Low, so zieht allein der Widerstand gegen VCC. Ein Hub von 5V 
laut Oszibild ist damit ausgeschlossen.

Das wird auch mit sehr langem Warten nix.

Aber das ist nur deshalb so ein dummes Rumgerate, weil der TE keine 
ausreichende Info liefert.

von Dave C. (dave_chappelle)


Lesenswert?

Ist wohl top secret ;)
Nächste Marssonde oder so.

von M. N. (Gast)


Lesenswert?

Du misst Mist.
Lös doch mal den Rechteck von dem 100 Hz Signal auch mal mit 250 µs/div 
auf, du wirst die gleichen verschliffenen Flanken sehen!

Welche Ausgangsimpedanz hast du? Welche Lastkapazität? Lass 
1:1-Tastkopf?

von Falk B. (falk)


Lesenswert?

Ist bei dem Oszi irgendeine Bandbreitenbegrenzung eigeschaltet? Oder ist 
der Tastkopf defekt? Nach dem Bild zu schätzen hat das Signal grob 50us 
Anstiegszeit, so schlecht ist nicht mal ein 1:1 Tastkopf.

von Henry (Gast)


Lesenswert?

O.k. hier bitte mal das Programm in (hüstel) BASCOM:

$regfile = "Attiny13.dat"
$crystal = 1200000
$hwstack = 8
$swstack = 2
$framesize = 5

Dim Uist As Word

Config Adc = Single , Prescaler = Auto
Start Adc

Config Portb.1 = Output
Led Alias Portb.1

Do
    Uist = Getadc(2)

      If Uist < 300 Then
      Led = 0
      End If

      If Uist > 300 Then
      Led = 1
      End If

Loop

End

Dieser Schmitt-Trigger ist nur als Versuch gedacht, um ein Gefühl für 
die
Verarbeitungsgeschwindigkeit des ATTINY zu bekommen. Später soll ein 
Messwert überwacht werden. Oszi- Tastköpfe sind o.k. Funktionieren 
direkt am Funktionsgenerator einwandfrei.

von Falk B. (falk)


Lesenswert?

@ Henry (Gast)

>O.k. hier bitte mal das Programm in (hüstel) BASCOM:

Das sieht OK aus, aber das Signal auf deinem Oszi ist komisch. Egal 
welche Frequenz, die Ausgänge vom AVR schaltne in 5 (FÜNF) Nanosekunden, 
das muss man auch ansatzweise sehen, keinesfalls 50us.

von Michael (Gast)


Lesenswert?

Henry schrieb:
> Dieser Schmitt-Trigger

Und wo ist da jetzt "Schmitt-Trigger"? Du hast eine konstante 
Schaltschwelle, die nicht vom vorherigen Zustand abhängt.

von Peter D. (peda)


Lesenswert?

Bau mal ne Hysterese ein:
1
      If Uist < 250 Then
2
      Led = 0
3
      End If
4
5
      If Uist > 350 Then
6
      Led = 1
7
      End If

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.