Har tidigare fixat till min PWM signal till en leddrivare genom en microprocessor, detta känns väldigt onödigt.
Det jag skulle vilja ha är en krets som fixar en PWM signal 0-100%. Kruxet är att jag vill ha en knapp eller liknande som ställer in t.ex 10 ,30 eller 100%. Går detta att göra utan en microprocessor?
Jag har kikat igenom div byggtrådar och databladet för 555, men är ändå svag på ideer
Klart det går att göra. Enklaste metoden jag kommer på är någon typ utav räknare som styr motstånd som ska kopplas in för de olika pulsbredderna.
Personligen skulle jag dock inte gå ifrån en µC för uppgiften, kolla tex. 73-350-60 Liten, billig, enkel. Du kommer nog få det svårt att hålla komponentkostnaden under det, för att inte tala om storleken.
Edit: Och då har den 4x hårdvaruPWM, vill du göra det i mjukvara kan det bli ännu mindre och billigare..
Såklart går det att göra utan mikroprocessor - men det blir ganska mycket kretsar i förhållande till att faktisk använda en mikroprocessor.
Om man utgår ifrån t.ex. 16 steg behövs en 4 bit upp/ner räknare, till det kommer logiken som dekoder knapparna till stuts-fri upp/ner pulser, det blir några gates och lite motstånd + kondensatorer för den delen.
Sedan tillkommer det 2 st op-amp för PWM-genereringen samt såklart lite motstånd + kondensatorer.
De 4 bit ska göras om till en analog spänning, det kan göras med 4 st motstånd.
Så valet är mellan 3 st kretsar, ung. 10 st motstånd, ung. 6 st kondensatorer för det ena valet eller 1 st mikroprocessor, 2 st motstånd, 2 st kondensatorer, 1 st spänningsregulator.
Så ersätter du trimpoten med 3 eller 4 trimpotar, beroende på hur många lägen du vill kunna ha och ansluter dessa med en mekanisk switch med t.ex. fyra lägen. Nu kan du ställa in hastighet för varje läge på switchen. Ett alternativ är att sätta en serie med fasta motstånd istället för trimpoten och med switchen ansluter till olika ställen i kedjan. Detta är definitivt snabbare/enklare än att hålla på att programmera, särskilt om man inte brukar programmera µC.
Anledningen till att jag vill undvika en µC är just programmeringsdelen.
Jag har programmerat en hel del i java,c#,c++ men inte just PIC kretsar, vilket skiljer sig lite tydligen (ok, jag är lat och bekväm och orkar därmed inte sätta mig in i det ).
int PWMPin = 9; // LED connected to digital pin 9
void setup()
{
pinMode(PWMPin, OUTPUT); // sets the pin as output
}
void loop()
{
analogWrite(PWMPin, 128); // analogWrite values from 0 to 255
}
Arduinon är jag väldigt bekväm med, har faktiskt en hög ATMega168-20AU TQFP32 härnågonstansiröran
strippar man ner den så blir det bara ett fåtal komponenter, det tråkiga är att lägga in bootloadern på den lilla plutten :/
ghost_rider skrev:det tråkiga är att lägga in bootloadern på den lilla plutten :/
Det kan du ju skita i om du inte tänker programera om den stup i kvarten från Arduino IDE.
Nu är det iochför sig inte nå jobbigare att lägga in en bootloader än något annta program, men den behövs bara för programering över seriport (eller USB).
Om man har en programmerare för AVR (vilket man ändå måste ha för att lägga på bootloadern) kan man ju lika bra lägga sin binär direkt på chippet utan bootloader, så slipper du pinna ut seriport osv.
Jag har programmerat många olika sorters och "storleker" mikroprocessorer och har aldrig använd annat än de inbyggda bootloader-funktioner som finns från fabriken, alltså ICSP.
Och jättejobbigt har det ju varit:
- Koppla till rätt ICSP-enhet, till PIC har jag PICKit2, till AVR en AVRISP Mk 2.
- Leda rätt på HEX-filen som ska överföras.
- Lägga över datan i mikroprocessorn.
Klart.
Det svåraste brukar vara att skapa hex-filen utan en massa buggar i funktionaliteten...
Eller så köper man en Aurdino med USB-interface för en 100- + 50-lapp, använder den tillsammans med breadboard för att labba fram lösningar och sedan också som ISP-programmerare när man har satt det hela på kretskort.