Dr_VingTor Skrevet 19. januar 2005 Del Skrevet 19. januar 2005 holder på å designe en viftekontroll jeg skal bygge til PCen min, den skal kunne styre 8 vifter og kunne kobles til 8 NTC-motstander for å måle temperatur. den blir vell ikke akkurat billig da, men moro å ha laget den selv. Siden dette er mit første elektronikk-prosjekt jeg lager selv helt fra bunnen av, så synes jeg det er lurt å spørre andre som har litt mer erfaring om det er noe jeg har glemt å tenke på... så her er det foreløpige kretsskjemaet har ikke satt på verdier på alle komponentene enda da, men det skal jeg fiks på snart... (bruker stort sett verdier som er oppgitt i datablader der det er mulig, og verdier jeg har sett i andre design) skal lage det på et tosidig kretskort, bruker SMD komponenter på det meste, og den skal lages slik at den passer inn i en 3,5" brønn. noen kontakter er ikke koblet til noe spesielt akkurat nå, men tenker på å utvide den med en skjerm senere som skal monteres i fronten i en 5 1/4" brønn, da skal disse kontaktene brukes til å koble sammen de to delene. Har en intern com-port i Pcen som skal kobles til slik at en kan sende data mellom kontrolleren (med skjerm senere kanskje) og Pcen. (og jeg vet at det bare er 4 kanalers PWM på AVRen, men skal ikke bruke de, lager PWM i firmware i stede, har testet det, og det så ut til å funke bra… men hvor stor frekvens bør PWM en ha?) Lenke til kommentar
Dr_VingTor Skrevet 20. januar 2005 Forfatter Del Skrevet 20. januar 2005 noen som vet hvordan en måler hastigheten til en PC-vifte, altså hvordan signalet fra vifta er, og hvordan det forteller turtallet? (er det 1 puls per omdreining eller hva?) kunne vært moro å kunne lest av hastighetene til viftene.. Lenke til kommentar
Brannigan Skrevet 22. januar 2005 Del Skrevet 22. januar 2005 Jeg er for tiden arbeidsledig, så jeg har også tenkt på et lignende prosjekt for å få mer erfaring med elektronikk, mikrokontrollere, kontroll systemer o.l. Jeg har også tenkt å lage en viftekontroll/monitor. Jeg har tenkt meg noe slikt: - ATMega128 eller 64 (sannsynligvis C++ implementasjon) - RS232 og/eller USB virtual com port (FTDI chip e.l.) - mulighet for å drive 6 vifter (hardware PWM) - avlesning av spenning: +5V, +12V, og alle viftespenninger - avlesning av viftehastighet - oppdatering av AVR program over serieport - monitor/kontroll program på PC (i C# eller Java) - En eller flere temp. sensorer eller NTCer Utsignalet fra viften kalles tach pulse. For å få generert denne pulsen må du koble spenning på tach utgangen. Jeg testet med 3,3VDC gjennom 10K motstand. (Tatt fra eksempel.) Dette gav pene firkantpulser på de to viftene jeg testet. Jeg regnet meg frem til to perioder pr. omdreining, men det virket litt rart. Jeg vet ikke om det er noe fasitsvar på PWM frekvens, så her er det kanskje best å prøve seg frem. Hvilken frekvens har du nå? Lenke til kommentar
stoffix Skrevet 22. januar 2005 Del Skrevet 22. januar 2005 dere går tydeligvis ikke GK elektro... når dere blir enige, kan dere lage worklog og forklare litt underveis? Lenke til kommentar
Dr_VingTor Skrevet 22. januar 2005 Forfatter Del Skrevet 22. januar 2005 (endret) har testet litt på en krets jeg bygde i høst for å lære meg å programmere AVR-kretser (AT90S2313), og hvis jeg har regnet rett (har ikke noe oscilloskop eller noe slik, så jeg får ikke målt på kretsen selv) så klarer den å drive en vifte med PWM frekvens på alt fra 15 Hz og opp til 1 MHz (sikkert høyere også, men det er jo ikke interessant a like vell), så en kan vell ta det som passer best. trur jeg vil ligge noe over 100 Hz i alle fall... kunne jo brukt ATMega128 jeg også når jeg tenker meg om, den har jo 8 PWM kanaler så jeg nå, og 8 interrupt pinner, men er noen av de pinnene felles? hvis de ikke er det hadde jo det vært genialt... og med 128KB Flash så trenger en ikke akkurat bekymre seg for at programmet blir for stort... (største programmet mitt til nå er rundt 1 KB kompilert...) Endret 22. januar 2005 av Dr_VingTor Lenke til kommentar
Brannigan Skrevet 23. januar 2005 Del Skrevet 23. januar 2005 Jo, på ATmega128 er noen av PWM og interrupt pinnene felles. To av PWM pinnene er også felles, så maks. 7 forskjellige PWM signaler. For å måle hastigheten på 8 vifter kan du jo bruke en multiplexer og bytte mellom tach pulsen til de forskjellige viftene. Er 8 PWM utganger et krav eller klarer du deg med mindre? Jeg valgte ATmega128 siden jeg har brukt den før og det er ikke så mye å spare på å bruke en billigere AVR. Lenke til kommentar
Brannigan Skrevet 23. januar 2005 Del Skrevet 23. januar 2005 dere går tydeligvis ikke GK elektro...når dere blir enige, kan dere lage worklog og forklare litt underveis? Jo, det er ikke umulig at jeg kan skrive en worklog. Kommer litt ann på interesse og slikt. Lenke til kommentar
Dr_VingTor Skrevet 23. januar 2005 Forfatter Del Skrevet 23. januar 2005 er ikke noe krav med 8 PWM kanaler, kan jo alltids programmere den til å lage PWM i firmware. Har testet ut kode som gjør det, riktig nok bare for 1 vifte enda, men å utvide koden til 8 vifter gir ikke mye mer kode (vil jeg tru). Men jeg vil ha 8 vifter... multiplexer var ikke noe dum ide da... kunne jeg jo lagt inn i designet jeg alt har... men da har jeg ikke nok kontakter til displayet igjen... spørs om jeg får gå for en ATmega128 da... kobla signalpinnen fra vifta til INT0 på kretsen min i går, fikk noe signal ut fra den i alle fall, men ble ikke helt klok på den... sikkert en del rart i koden min som knoter til, har ikke brukt eksterne interrupt før... får lese litt mer på hvordan dette signalet er, kan vell hende jeg trenger noe mer for å koble den til rett? får se litt mer på det i kveld... Lenke til kommentar
Sir_cruz Skrevet 23. januar 2005 Del Skrevet 23. januar 2005 dere går tydeligvis ikke GK elektro...når dere blir enige, kan dere lage worklog og forklare litt underveis? Jo, det er ikke umulig at jeg kan skrive en worklog. Kommer litt ann på interesse og slikt. Det er intresse går selv GK elektro med svært lavt snitt er jeg redd for så jeg skjønner ikke mer en det jeg trenger Lenke til kommentar
Brannigan Skrevet 23. januar 2005 Del Skrevet 23. januar 2005 er ikke noe krav med 8 PWM kanaler, kan jo alltids programmere den til å lage PWM i firmware. Har testet ut kode som gjør det, riktig nok bare for 1 vifte enda, men å utvide koden til 8 vifter gir ikke mye mer kode (vil jeg tru). Men jeg vil ha 8 vifter... multiplexer var ikke noe dum ide da... kunne jeg jo lagt inn i designet jeg alt har... men da har jeg ikke nok kontakter til displayet igjen... spørs om jeg får gå for en ATmega128 da... kobla signalpinnen fra vifta til INT0 på kretsen min i går, fikk noe signal ut fra den i alle fall, men ble ikke helt klok på den... sikkert en del rart i koden min som knoter til, har ikke brukt eksterne interrupt før... får lese litt mer på hvordan dette signalet er, kan vell hende jeg trenger noe mer for å koble den til rett? får se litt mer på det i kveld... En liten ting, ATMega128 er veldig dyr på elfa. Du kan prøve Acte, men de selger muligens bare til bedrifter, skoler osv. Digi-Key (www.digikey.com) i USA selger den til litt under 100 NOK og de har meget bra service. De har også mye annet. Hvilken kompilator bruker du? Eller skriver du assembler? Jeg kan prøve å skrive kode for vifteavlesning de nærmeste dagene, men jeg kan ikke love noe. Husket du å koble pinnen med tach pulsen til DC spenning? Dersom du ikke gjør det, så får du rare pulser. Lenke til kommentar
Brannigan Skrevet 23. januar 2005 Del Skrevet 23. januar 2005 dere går tydeligvis ikke GK elektro...når dere blir enige, kan dere lage worklog og forklare litt underveis? Jo, det er ikke umulig at jeg kan skrive en worklog. Kommer litt ann på interesse og slikt. Det er intresse går selv GK elektro med svært lavt snitt er jeg redd for så jeg skjønner ikke mer en det jeg trenger OK, men jeg tror jeg vil ha en hardware prototyp klar først. Lenke til kommentar
Brannigan Skrevet 23. januar 2005 Del Skrevet 23. januar 2005 kobla signalpinnen fra vifta til INT0 på kretsen min i går, fikk noe signal ut fra den i alle fall, men ble ikke helt klok på den... sikkert en del rart i koden min som knoter til, har ikke brukt eksterne interrupt før... får lese litt mer på hvordan dette signalet er, kan vell hende jeg trenger noe mer for å koble den til rett? Her er et eksempel. Se nederst på side 1. http://rocky.digikey.com/WebLib/Linear%20T...202/LTC1840.pdf Lenke til kommentar
Dr_VingTor Skrevet 23. januar 2005 Forfatter Del Skrevet 23. januar 2005 regner med jeg skal få tak en del deler på skolen (NTNU) gjennom omegav.. akkurat nå skriver jeg i C, bruker avr-gcc (WinAVR), men har også skrevet litt i assembler, men C er jo litt lettere når en har lært det da (jeg kan ikke så alt for mye enda da, mer som det grunnleggende) hehe, glemte å koble til spenning på tach pulsen, men fant noe som en også må ta hensyn til når en bruker tach med PWM http://www.analog.com/library/analogDialog...2/fan_speed.pdf Lenke til kommentar
Brannigan Skrevet 25. januar 2005 Del Skrevet 25. januar 2005 Jeg leste artikkelen og "pulse stretching" er jo en elegant løsning. Jeg hadde egentlig tenkt å glatte PWM outputen med en elektrolyttkondensator. Lenke til kommentar
Dr_VingTor Skrevet 26. januar 2005 Forfatter Del Skrevet 26. januar 2005 funker vell det også... hvis du gjør det som i det eksempelet du linka til så vil jo også spolen hjelpe til med å glatte spenningen/strømmen over vifta... slipper jo problemet med signalstøy ved jevn DC spenning også. Det kan jo være et problem. Skal måle litt på kretsen når jeg får anledning for å se om PWMen genererer mye støy. Jeg vil helst ikke glatte PWMen, mener å ha lest at en vil kunne kjøre viftene på mye lavere hastighet på PWM enn på DC. (kondensatoren i mitt design er ikke for glatting, men for fjerning av noe støy, og pipelyd fra vifta, som jeg har lest og hørt kan oppstå ved PWM) skal se om jeg får tatt noen bilder av prototypen min snart... har lagt ut koden jeg jobber på og bruker her: http://vingtor.kicks-ass.org/filer/vifte.c vifta kjører faktisk på 10% spenning (1,2 Volt), men alt under 30% er meningsløst egentlig... ikke noe luftstrøm å skryte av akkurat... bruker bare en seriell terminal for å kommunisere med kretsen nå... skal se om jeg får laga en liten side med bilder o.l. etter hvert... trur nok det blir laga en worklog etter hvert også... gidder ikke begynne på den før jeg har fått ferdig designet... Lenke til kommentar
ddd-king Skrevet 26. januar 2005 Del Skrevet 26. januar 2005 Off topic: Ser at du har brukernavn: toreril. Hvis jeg ikke husker helt feil; hadde du it-intro (med Matlab) høsten 2003? mener å huske et av studass.barna hadde dette brukenavnet. dangdung her On topic: Hvorfor vil du ikke ha kondensatoren med i designet? Jeg vil nok tro at den vil gi en mer stabil spenning til viften. Noe som nok fører til bedre resultat. Lenke til kommentar
Dr_VingTor Skrevet 27. januar 2005 Forfatter Del Skrevet 27. januar 2005 du husker rett ja, hadde deg som studass (jeg fikk A ).. vell, kan hende det er lurt å sette på noen kondensatorer på 12 Volten, (altså mellom GND og +12V) for å kunne gi nok strøm og spenning til viftene, men det er ikke nødvendig å ha kondensatorer over selve viftene, men det kan jo hende at det er lurt av andre grunner... har jo tegnet inn kondensatorer der, men de er ment at skal være små da... (trur jeg skal bytte ut den komponenten jeg har i designet nå, slik at det blir mulig å sette inn større kondensatorer også, om det skulle vise seg å være bedre). Lenke til kommentar
Dr_VingTor Skrevet 27. januar 2005 Forfatter Del Skrevet 27. januar 2005 har nå mekka litt mer på koden (ligger på samme linken som lengre oppe) trur den nå kan lese hastigheten, eller noe i alle fall... litt vanskelig å tyde data over terminalklient, så jeg får vell begynne på et lite program for å kommunisere med kretsen... har også laga en liten video (5,7 MB), lyd ble det ikke mye av... men en kan nå se at vifta går rundt, og som en kanskje ser så angir jeg hastigheten på tastaturet med tallene 0-9... filmet kretskortet også, men det er ikke akkurat bra bilde heller da... skulle hatt digitalkamera... http://vingtor.kicks-ass.org/filer/vifte.avi trur også at jeg skal klare meg med ATMega16, bruker en 8 til 1 multiplexer for å lese hastigheten på viftene, og ved å bruke enable-pinne på muxen så kan jeg fremdeles få til å bruke skjerm også..., virker som om 16 KB med flash blir mer enn nok også, koden nå er ikke mer enn 1,66 KB kompilert. Lenke til kommentar
Brannigan Skrevet 28. januar 2005 Del Skrevet 28. januar 2005 Jeg har skrevet ferdig koden for å lese viftehastighet. Testet programmet på en vifte som var oppgitt til 1200 rpm og får 1220-1235 rpm som resultat. (Avlest vha. JTAG ICE.) På skop er en periode 24,3 ms. Koden er beregnet brukt med pulse stretching, men jeg har bare testet med DC spenning til viften. // Funksjon: Avlesning av viftehastighet vha. tach puls // MCU: ATMega128 // Skrevet av: Brannigan #include <avr/io.h> #include <avr/signal.h> #include <avr/interrupt.h> #include <limits.h> #define SCALE_TACH_PULSE 300000.0 volatile unsigned int clock; volatile unsigned char clock_state; volatile float rpm; enum clock_states {IDLE, INIT, CLOCK_RUNNING}; void init(void); INTERRUPT(SIG_OUTPUT_COMPARE2) { if (clock != UINT_MAX) // sjekk for overflow { clock++; } } INTERRUPT(SIG_INTERRUPT0) { switch (clock_state) { case IDLE: break; case INIT: clock = 0; // nullstill klokke clock_state = CLOCK_RUNNING; // sett ny tilstand break; case CLOCK_RUNNING: // En periode passert if (clock != UINT_MAX) { rpm = SCALE_TACH_PULSE / clock; } else { rpm = 0; // klokke "overflow" } clock_state = IDLE; // stopp måling av tach puls break; } } int main (void) { init(); // init timer og ext. interrupt clock_state = INIT; // start måling av tach puls sei(); // enable global interrupt while (1) { } return 1; // unngå kompilator advarsel } // Init timer 2 og eksternt interrupt på INT0 void init(void) { // Timer 2 settes opp til å generere output compare interrupt hvert 100 mikrosekund TCCR2 = (1<<WGM21)|(1<<CS21); // FOC: disabled // Waveform generation mode: CTC // Compare match output mode: Normal // Clock select: /8 TCNT2 = 0; OCR2 = 91; // Funnet vha. skop TIMSK = (1<<OCF2); // Timer 2 utput compare interrupt enable // Setter opp eksternt interrupt, INT0 EICRA = (1<<ISC01); // INT0, falling edge EIMSK = (1<<INT0); // INT0 interrupt enable EIFR = (1<<INTF0); // Clear INT0 interrupt flag } Lenke til kommentar
icer Skrevet 4. februar 2005 Del Skrevet 4. februar 2005 (endret) For oss dødelige er det meste dere snakker om gresk, men logisk... Det hadde vel ikke vert mulig at en av dere kunne tegnet opp kretsen i multim slik den blir, samt printkortskjema? Bruker det tillegsprogrammet som multisim har? Den kretsen dere holder på med, er det med LCD for avlesning av hastighet eller? Hvordan blir det når dere stiller på viftehastigheten? Må du bruke PC'en til å stille eller? Hva blir prisen for en sånn sak? Hvor mange vifter kan du koble på? Endret 4. februar 2005 av icer Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå