MICPRG opdracht 5a.

© Harry Broeders.

Deze pagina is bestemd voor studenten van de Haagse Hogeschool - Academie voor Technology, Innovation & Society Delft groep EQ1.2.

Frequentie-meter.

De AVR STK500 systemen van de opleiding Elektrotechniek aan de Academie voor Technology, Innovation & Society Delft zijn uitgerust met een timer-IC NE555 dat een blokgolf opgewekt op pin PB1 = T1 van de ATmega32. Door het aansluiten van een capaciteit tussen de zwarte en de blauwe connector kun je de frequentie variëren. Deze hardware kan ook gesimuleerd worden door de AVE AVR Studio plugins (menu Tools, AVE AVR Studio plugins, Capicity Measurement). Op pagina 10 en 11 van de NE555 datasheets De voorgaande link verwijst naar een PDF bestand. staat uitgelegd hoe de onderstaande schakeling werkt en hoe je de periodetijd van de opgewekte blokgolf kunt berekenen.

Maak een frequentie-meter gebaseerd op de counter-mode van Timer/Counter1 en de timer-mode van Timer/Counter0 van de ATmega32. De frequentie moet zo nauwkeurig mogelijk gemeten worden. De gemeten frequentie moet op het LC-Display worden zichtbaar gemaakt met de tekst: "De frequentie is: ........Hz". Laat alleen significante cijfers zien.

Uitleg en tips.

Als je gedurende 1 seconde de opgaande flanken van een signaal telt dan heb je de frequentie in Hz. Je kunt Timer/Counter1 gebruiken om de pulsen te tellen en Timer/Counter0 om 1 seconde te timen. De klokfrequentie van de ATmega32 is exact 3.686400 MHz. Het meest eenvoudig is om het programma continue te laten meten, de waarde op het display wordt dan 1x per seconde ververst.

Als er geen Cx wordt aangesloten (Cx = 0) is de frequentie ongeveer 4 kHz. Je mag ervan uitgaan dat Cx maximaal 1 µF is (de frequentie is dan ongeveer 40 Hz).

Je kunt het programma f.hex gebruiken om te kijken wat de frequentie bij een bepaalde C is. Het programma f.hex bepaalt de exacte frequentie in Hz (± 1 Hz) van het signaal op PB1 en geeft dit continue weer. Telkens als ledje PB7 knippert wordt het display opnieuw beschreven. Waarom komt de waarde die getoond wordt door het programma f.hex niet overeen met de theoretische waarde? Als jouw frequentie-meter een andere waarde meet dan het programma f.hex dan moet je dat kunnen verklaren!

De blokgolf is alleen aanwezig op PB1 als de schakelaar rechts boven op het AVR STK500 practicum systeem in de stand "Display" staat (zoals je op LED1 kunt zien).

Let op!

Het signaal op PB1 = T1 wordt door de ATmega32 alleen herkend als de LED op PB1 losgekoppeld is. Dit kun je doen door de connector boven LED1 voorzichtig los te maken. Graag de connector weer vastmaken als je klaar bent met het testen van je programma.

Aanpak.

Maak een stappenplan en maak voordat je een (deel)programma gaat coderen eerst een ontwerp op papier. De practicumdocent zal naar dit stappenplan en ontwerp vragen bij het aftekenen van je opdracht.

Thuis simuleren met behulp van AVE AVR Studio plugins.

Dit programma is helaas thuis niet te simuleren omdat 1 seconde processortijd "single steppen" in werkelijkheid veel te lang duurt. We moeten "single steppen" en kunnen niet "runnen" omdat de Capacity Measurement plugin alleen werkt als we "single steppen" (dit is een fout in de AVR Studio Plugin Development API, Atmel heeft deze fout erkend maar nog niet hersteld).