Eftersom min kompis ville ha tillbaka sin funktionsgenerator så har jag tänkt att bygga något som kan ersätta den. Det kommer att bli en fyrkantsgenerator eftersom jag tycker det är användbart och inte så svår att fixa en tillräckligt bra med en PIC16F819 och en quad-OP. OPn är LF347 som i princip likadan som TL074 fast med lite högre bandbredd enligt databladen.
Specifikation digitala biten:
4 knappar för val av frekvensområde (finns ytterligare en som inte används)
Totalt frekvensområde: 5 Hz – 200 kHz (går upp till 2,5 MHz men då hoppar duty cyclen i 4 steg)
Duty cycle ställbar i 256 olika steg (nästan alltid)
Strömställare för 50% duty cycle / helt symetrisk fyrkant
Specifikation analoga biten:
Ställbar amplitud –12V till +12V
Ställbar offset
Strömställare för ingen offset
Hur långt jag kommit:
Hade tänkt att bli klar innan skolan börjar den 19 januari men det hinner jag inte eftersom jag har hittat på en massa andra saker istället

Jag har byggt upp generator på experimentplatta och skrivit kod som uppfyller ovanstående specifikation. Den analoga biten har också byggts på experimentplattan och testat så att den fungerar. Jag har en låda till det hela, transformator och de andra delarna som behövs.
Förbättringar:
I och med att skolan är på annan ort (inte långt bort men ändå) så kommer det kanske att ta ett tag innan generator blir färdig. Därför tänkte jag passa på att fråga om vad för (enkla) förbättringar man kan göra, vad man ytterligare kan implementera mm. Mina idéer hitintills:
1. Strömställare för 5V amplitud
2. Ytterligare ett frekvensområde typ 0,1-10 Hz eller 0,01-10 Hz
3. Spara inställt frekvensområde i EEPROM (måste göras innan strömmen stängs av och jag ser ingen annat alternativ än att göra det varje gång frekvensområdet bytas.
4. Lysdioder som indikerar valt frekvensområde. Finns inte pinnar till det i dagsläget men om man konfigurerar om A/D-omvandlaren så den tar matningsspännigen som referens så kan man skaffa fram 3 pinna vilket räcker till 6 lysdioder (behöver bara 5 st) om man använder sig av Charlieplexing. Om använder matningsspänningen som referens, kommer frekvensen att börja hoppa mellan olika värden pga. osäkerheten i A/D-omvandlingen?
5. Göra om fyrkanten till triangelvåg. Har inte hittat eller kommit på någon enkel koppling som är frekvensoberoende men det är ju en önskvärd funktion!
Fler förslag och kommentarer uppskattas.
Problem:
Av någon anledning så fungerar OP inte bra som buffert när spänningen närmar sig den negativa matningsspänningen, istället för att ligga kvar någonstans nära den negativa matningsspänningen så hoppar utgången till positiv matningsspänning. Jag har fått lösa det så att jag satt två dioder innan potentiometern kopplas till den negativa matningsspänningen (se nedan). Någon som vet vad detta fenomen kan bero på?
Bild och schema:

