Doorgronden van een circuit

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • maleadt
  • Registratie: Januari 2006
  • Laatst online: 08-10 09:10
Hallo tweakers,

Ik ben bezig met het ontwerpen van een schakeling die van 4 knoppen de toetsaanslagen moet kunnen doorsturen naar een computer, via USB. Om weinig componenten te gebruiken, en ik al enige ervaring heb met AVR, zou ik V-USB gebruiken. Die bibliotheek komt met verschillende voorbeelden, waaronder een soortelijk project voor 17 knoppen. Omdat ik er slechts 4 ga gebruiken, vond ik dit wat overkill en zou ik het willen proberen met een AtTiny45, net zoals in het Easylogger voorbeeldproject.

Het schema ziet er dan als volgt uit (dit was het origineel):
Afbeeldingslocatie: http://i.imgur.com/hl7rS.png

Ik ben echter een informaticus (met een sterk beperkte hoeveelheid elektronica-ervaring), waardoor ik maar bar weinig snap van dit circuit. Maar toch wil ik het doorgronden, vooraleer het te gebruiken. Mijn vermoedens:
  • C1 en C2 dienen om VCC te filteren van ruis, een combo van 100n en 10u om zowel hoge als lage frequenties te filteren.
  • R1 en R2 moeten iets te maken hebben met het limiteren van de stroom, hetzij door de dioden, hetzij naar de AtTiny (40mA max).
  • De dioden hebben vermoedelijk iets te maken met het moduleren van het signaal naar het gepaste differentiaal niveau (voor USB 1.1, wat V-USB gebruikt, 0-0.3 voor laag en 2.8-3.6 voor hoog).
Alvast bedankt :)

Acties:
  • 0 Henk 'm!

  • Lethalshot
  • Registratie: December 2007
  • Laatst online: 13:43
C1 is inderdaad aanwezig om de schakelpieken van de microcontroller op te vangen.
C2 is om de traagheid van de voeding op te vangen. Deze condensatoren zitten er dus niet voor het wegwerken van ruis, maar voor het stabilizeren van je voeding (voor korte en langere dips). Overigens is 10µ echt het maximum wat volgens de USB spec aan een schakeling mag worden gehangen.

De weerstanden zorgen samen met de zenerdiodes voor iets heel anders, namelijk dat USB maar (zoals je zelf al hebt gezegd) 3.3V als logic high heeft. Je µC draait op 5V en zal dus 5V uitsturen. Om beschadiging aan de USB host te voorkomen zitten er zener diodes die het signaal limiten tot 3,6V. Om vervolgens weer te zorgen dat je µC niet kortgesloten wordt zitten die weerstanden in serie met I/O pinnen van de µC. Hierdoor wordt de stroom begrenst tot (5-3,6)/68 = 20 mA (wat wel erg veel is).
Al met al zal het wel werken, maar een nette oplossing is het niet.

Acties:
  • 0 Henk 'm!

  • timberleek
  • Registratie: Juli 2009
  • Laatst online: 08-09 22:13
die weerstanden zou ik inderdaad groter kiezen.

die 100nF wil je zo dicht mogelijk bij de uC zetten (fysiek), dan vangt hij de kleine dippen en pieken op als gevolg van de Uc's rekenwerk.

Acties:
  • 0 Henk 'm!

  • maleadt
  • Registratie: Januari 2006
  • Laatst online: 08-10 09:10
@Lethalshot: wat voor schema vind je dan "netter"? Bijna alle V-USB schakelingen die ik vind werken op een dergelijke manier... Soms zelf met nog kleine weerstanden / grotere condensatoren, zoals bij een schema van LadyADA.

In ieder geval, binnenkort eens wat attiny's bestellen, zodat ik live kan spelen met verschillende weerstandswaarden. Ze blijken immers vrij cruciaal om het uiteindelijke resultaat te laten herkennen op zo veel mogelijk USB hosts.

Acties:
  • 0 Henk 'm!

  • Lethalshot
  • Registratie: December 2007
  • Laatst online: 13:43
Ik weet niet op welke snelheid je Attiny moet lopen, maar als ik het zou moeten oplossen zou ik een kleine 3.3V regulator ertussen zetten. Dan heb je die zener diodes en weerstanden niet nodig, en zal je schakeling hoogstwaarschijnlijk nog prima werken.
Tevens zijn die capaciteiten een volgens de standaard maximale waarden. Dat wil niet zeggen dat je het niet mag doen, maar sommige host controllers zullen je schakeling eruit gooien en zal hij niet werken. Wat er namelijk gebeurt is dat je een grote piekstroom trekt zodra je de schakeling op een usb poort aansluit. Nu zijn alle USB poorten verplicht short-circuit proof dus zal je de host niet beschadigen, maar sommige host controllers gooien die usb poort uit om de short circuit te verwijderen, hierdoor zal je schakeling niet meer werken, wat tot heel veel zoekwerk kan lijden.
De lage weerstanden worden waarschijnlijk gekozen om aan de slew rate van USB te voldoen. Zener diodes hebben namelijk een relatief grote parasitaire capaciteit. Om deze capaciteit snel te kunnen op en ontladen zijn redelijk grote stromen nodig en dus een lage weerstand.
Tevens zou ik als tip voor je schema willen meegeven om pull-up weerstand bij je inputs te zetten en misschien zelfs een kleine condensator voor het oplossen van contact dender (contact dender is eventueel ook in software op te lossen).

Acties:
  • 0 Henk 'm!

  • maleadt
  • Registratie: Januari 2006
  • Laatst online: 08-10 09:10
Oké, bedankt voor de informatie. Het zal nog een beetje zoeken & uitproberen worden, maar ik heb ondertussen ook al een wiki pagina gevonden waar de mogelijke strategieën voor signaal- en voedingsspanning grondig uit de doeken gedaan worden (geen idee hoe ik dat gisteren niet gevonden heb).

Acties:
  • 0 Henk 'm!

Verwijderd

C1 en C2 zijn voedingsfilters, R3 is een setting weerstand om de snelheid van je USB bus in te stellen en R1, R2, D1 en D2 zijn ervoor omdat USB op 3.3V werkt, terwijl de voedingsspanning 5V is.
Er vindt geen modulatie of wat dan ook plaats, gewoon spannings"conversie".

Acties:
  • 0 Henk 'm!

  • SA007
  • Registratie: Oktober 2002
  • Laatst online: 11-10 16:24

SA007

Moderator Tweaking
Overigens zie ik een paar belangrijke punten:

- Volgens de standaard V-USB config moet D+ of D- aan de INT0 hangen.
Het is werkend te krijgen zonder, maar voor een beginner zeker niet aan te raden.

- Om de RESET als input/output te gebruiken heb je 2 opties:
1. met een HV (high-voltage) programmer werken, de meeste goedkope kan dit niet mee.
2. via ISP de rstdisable fuse aanzetten en hopen dat het meteen werkt, want nadat je die fuse omgooit kan je dan niks mee aanpassen.

Je kan overigens ook 6 knoppen aan 3 pinnen hangen.
Hang een pull-down die zwakker is dan interne pull-up aan de inputpin, schakelaar tussen de pin naar ground en een naar vcc.
Zet je poort op input (de zwakke pull-down trekt 'm naar 0), lees de pin, is ie 0 dan is de VCC knop niet ingedrukt
Zet de pull-up aan, nu is ie precies omgekeerd.

Je kan nog 3 meer schakelaars eraan hangen door combinaties van pinnen te gebruiken, maar dan wordt het vrij snel erg lastig.

Acties:
  • 0 Henk 'm!

  • maleadt
  • Registratie: Januari 2006
  • Laatst online: 08-10 09:10
@RoadRunner84: Dankje, nu weet ik ook waar die derde weerstand voor dient.

@SA007: Interessant! Ik wist niet dat het niet evident was om de RESET-poort als I/O te gebruiken. Tof idee met de poorten ook, ik was anders al aan het denken aan een oplossing die multiplext.
Pagina: 1