Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[HowTo] Temperatuur-PWM Fan Controller middels een PIC

Pagina: 1
Acties:
  • 772 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Temperatuur-PWM Fan Controller middels een PIC
Afbeeldingslocatie: http://gathering.tweakers.net/global/templates/got/images/layout/pixel.gif
/me Update: 24 september 2004:
  • Blijkbaar is pin A5 van de PIC alleen een ingang, waardoor de casefan niet werkte. Ik heb hem omgewisseld met A6 welke aangesloten was op een druktoets
  • Sourcecode beschikbaar
  • Meer plaatjes (man, ik heb autofocus nodig :( !)
  • Oude onscherpe plaatjes toegevoegd

1. Introductie

Ik ben net als veel mensen geërgerd door de herrie die mijn PC fans maken. Veel fanregelaars zoals "rheobus" oid besturen niet de fan maar regelen alleen de snelheid. Dus wanneer je temperaturen te hoog worden terwijl je fan op een lagere snelheid draait loop je het risico op oververhitting of doorgebrande componenten. Een ander probleem met dergelijke controllers is dat ze spanningsgestuurd zijn. Dit betekend dat er veel verlies is om bijv. 4Volt te maken van 12V.
Deze pagina beschrijft hoe je zelf een temperatuur fan-controller kunt maken. De fans worden aangestuurd middels een PWM signaal van de PIC microcontroller. De microcontroller meet de temperaturen van diverse componenten in de PC en bestuurd eenzelfde aantal fans.
  • Er zijn 3 modes beschikbaar voor de gebruiker (Koel, Stil en Normaal).
  • Elke mode heeft een termperatuur instelling voor de CPU, PSU, Video en kast.
  • Middels PWM tracht de PIC het component optimaal te koelen op de ingestelde temperatuur. Wanneer de PSU is ingesteld op bijv. 45 graden dan zal de fan langzamer of sneller draaien totdat die temperatuur is bereikt.
  • Alle temperaturen kunnen worden ingesteld via een menu structuur.
  • Er zijn 4 druktoetsen om de PIC te sturen, 1 druktoets om door de verschillende modes heen te bladeren, 1 druktoets om de modes te bewerken en 2 +/- druktoetsen.
Voor meer informatie over PWM fancontrol en PIC microprocessors, zie onderaan de links-sectie.



2. Hardware

2.1 Componenten
  • Het hoofdcomponent in dit project is de PIC microprocessor.
    Deze uP meet de temperaturen, berekend de PWM waarden, bestuurd het display en het alarm. Het krijgt zijn input via 4 druktoetsen (zie onderaan de links-sectie voor Datasheets).
    In het huidige ontwerp is een PIC16F819 gebruikt. Deze chip heeft al een 8MHz interne klok, dus externe kristallen en condensators zijn overbodig. De 16F819 heeft 16 vrij te gebruiken I/O pinnen. Alle pinnen worden gebruikt: door de LCD (6), druktoetsen (4), fans (4), temperatuursensors (1) en alarm (1).
  • Temperatuurmeting wordt gedaan met de Dallas/Semiconductors 1-wire DS1820. Dit is een 9-bit sensor welke in een 1-wire netwerk geplaatst kan worden. Er zijn 4 van deze sensors in het netwerk. Elke sensor heeft zijn eigen unieke adres en kan op verzoek zijn eigen temperatuurmeting naar de PIC zenden. Dit bespaard een hoop pinnen op de uC. Het grootste nadeel is dat het unieke adres bij de PIC bekend moet zijn. Dit houdt in dat het adres in het programma gezet moet worden.
  • Het LCD is HD44780 compatible. Het LCD gebruikt 2 lijnen met 16 karakters. Ik heb een prachtige shop in Nederland gevonden die een dergelijk LCD verkoopt voor maar 9 euro (http://www.htvision.com/ in Groningen).
  • De transistors voor de fanaansturing zijn de BD139. Dit zijn NPN transistors welke een behoorlijke stroom aankunnen. Het maximum vermogen mét heatsink is ongeveer 12 Watt, zonder heatsink kunnen er maximaal fan's van 2-3 Watt gebruikt worden.
Afbeeldingslocatie: http://faq.tweakers.net/cme/pic-pwm-lcd-control/lcd_small.jpg
Fig 1 - Een oude LCD uit een telefoon

Afbeeldingslocatie: http://faq.tweakers.net/cme/pic-pwm-lcd-control/BENQ0022_small.jpg
Fig 2 - Blauw/Wit LCD


2.2 Schema

Tsja, wat kan ik hierover zeggen. Het is erg simpel, sluit de transistor aan op de PIC, sluit de druktoetsen aan op de PIC en sluit het display aan op de PIC. Voor de druktoetsen worden 10K pullups gebruikt. De 1-write pin heeft een 4K7 pullup.
Mijn PC voeding was niet erg schoon waardoor ik een buffer condensator nodig had op de 5V lijn. Het alarm wordt geschakeld door een BC547 welke ongeveer 100mA max. kan aansturen.

Hieronder is een lijst van pin definities en het schema zelf.

Pin definities:
#define BUT1 PIN_A0
#define BUT2 PIN_A1
#define BUT3 PIN_A6
#define BUT4 PIN_A7

#define FAN1 PIN_A2
#define FAN2 PIN_A3
#define FAN3 PIN_A4
#define FAN4 PIN_A5

#define LCD_D4 PIN_B4
#define LCD_D5 PIN_B5
#define LCD_D6 PIN_B6
#define LCD_D7 PIN_B7
#define LCD_EN PIN_B3
#define LCD_RS PIN_B2

#define ALARM PIN_B1
Afbeeldingslocatie: http://faq.tweakers.net/cme/pic-pwm-lcd-control/schematic_small1.gif
Fig 3 - het Schema



3. Software

Het programma voor de PWM controller is gemaakt met een PIC C compiler genaamd CCS.
Het programma kan in de PIC geflasht worden met IC-prog of WinPIC en bijv. de JDM PIC programmer.

3.1 DS1820 Adres lezer

Dit programma leest het adres van de DS1820 temp sensor aangesloten op pin B2. De data wordt verzonden middels een RS232 verbinding van 9600 baud. De zendpin is B1, ontvangspin is B0. Vergeet niet de 4K7 pullup weerstand op de datalijn van de DS1820. De RS232 interface kan gemaakt worden middels een 100K weerstand en een 5V1 zener als pulldown van het COM-TXT (PIC-RXD) signaal (zie de linksectie voor RS232 connecties)

Sourcecode: Download (rechtermuisknop > opslaan als...)


3.2 Hoofdprogramma

The hoofdprogramma heeft de volgende functies:
  • Elke seconde de temperatuur van de sensors uitlezen
  • Berekenen van de nieuwe PWM
  • Het schrijven van de modes, termpaturen en menu naar het LCD
  • Het alarm activeren wanneer de temperatuur 10 graden boven de setpoint komt
  • Uitlezen van temp- and mode gegevens uit de EEPROM
  • Uitlezen van het unieke adres van de temperatuursensors van de EEPROM (Beschikbaar in V2)
Dit zijn de druktoets functies:
  • Toets 1 - Verander het modenummer (3 modes beschikbaar)/Exit Edit menu's
  • Toets 2 - Enter/Cycle instellingsmenu's (Instellen van CPU, PSU, Case, Video, Safemode, Alarm setpoint voor de huidige mode)
  • Toets 3 - +
  • Toets 4 - -
In het Instellingsmenu kunnen de volgende waarden worden vastgelegd:
  • CPU setpoint - Tracht deze temperatuur te handhaven voor de CPU
  • PSU setpoint -
  • Case setpoint -
  • Video setpoint -
  • Safemode setpoint is de minimale PWM, de fan zal minimaal deze snelheid draaien.
  • Alarm setpoint wordt gebruikt om het alarm te triggeren. Wanneer deze is ingesteld op 10 graden gaat het alarm af wanneer de temperatuur 10 graden hoger is als het ingestelde setpoint.
Sourcecode: Download (rechtermuisknop > opslaan als...)
Fast-DS1820-include: Download (rechtermuisknop > opslaan als...)

3.3 Problemen
  • Toen ik het programma ging schrijven merkte ik dat de PIC niet genoeg geheugen had. De 16F819 implementatie werkte, maar de tekst op het LCD werdt afgekapt. Met mijn huidige code wordt de chip voor 100% gebruikt. Dit komt omdat het aansturen van het LCD behoorlijk wat geheugen vereist. De 2e versie zal gebaseerd worden op een 16F88 welke meer geheugen tot zijn beschikking heeft waardoor er meer functionaliteit en beter tekstondersteuning kan worden gemaakt. Deze laatste chip is 100% pincompatible met de huidige.
  • Door een timingsprobleem was het PWM signaal niet helemaal schoon. Had ik maar een scope om het PWM signaal te analyseren zodat ik de delay_us() instructie beter kon optimaliseren :(
  • DS1820 adressen zijn verschillend voor elke sensor. Op dit moment worden de 64bit adressen opgeslagen in de HEX file. Deze HEX file werkt dus alleen met mijn sensors (uitlezen van de adressen in de EEPROM vanaf V2)

4. Foto's en Filmpje

Afbeeldingslocatie: http://faq.tweakers.net/cme/pic-pwm-lcd-control/test-setup_small.jpg
Fig 4 - Test opstelling met oude LCD

Afbeeldingslocatie: http://faq.tweakers.net/cme/pic-pwm-lcd-control/front1_small.jpg
Fig 5 - Frontaanzicht de LCD/druktoetsen, ingebouwd in mijn PC

Afbeeldingslocatie: http://faq.tweakers.net/cme/pic-pwm-lcd-control/print_small.jpg
Fig 6 - De schakeling geplaatst binnen in de PC

Afbeeldingslocatie: http://faq.tweakers.net/cme/pic-pwm-lcd-control/IM000783_small.jpg
Fig 7 - Oude koeling van de transistors

Afbeeldingslocatie: http://faq.tweakers.net/cme/pic-pwm-lcd-control/IM000788_small.jpg
Fig 8 - Nieuwe koelblokjes voor de transistors

Afbeeldingslocatie: http://faq.tweakers.net/cme/pic-pwm-lcd-control/BENQ0005_small.jpg
Fig 9 - De schakeling opgebouwd op gaatjesprint

Afbeeldingslocatie: http://faq.tweakers.net/cme/pic-pwm-lcd-control/BENQ0012_small.jpg
Fig 10 - Toegevoegd menu

Afbeeldingslocatie: http://faq.tweakers.net/cme/pic-pwm-lcd-control/BENQ0020_small.jpg
Fig 11 - Zijaanzicht in PC

Afbeeldingslocatie: http://faq.tweakers.net/cme/pic-pwm-lcd-control/BENQ0014_small.jpg
Fig 12 - Zijaanzicht van de PC (Goedkope kast ;))

BENQ0021.AVI
Filmpje (codec: MJPEG + ADPCM) 2,33MB



5. Links
In deze sectie staan enkele links naar software en informatie over PWM.

5.1 Software
  • WinPIC - Een vrij te gebruiken PIC programmer met ondersteuning voor JDM en nieuwe PIC's zoals de 16F87.
  • IC-Prog - Een vrij te gebruiken populaire PIC programmer met ondersteuning voor JDM en een heleboel PIC's.
5.2 Info
(Bron: http://www.piekuur.net/voorthuijsen/projects/pwm/pwm.htm / http://www.coolprojects.tk/)

[ Voor 184% gewijzigd door een moderator op 24-09-2004 22:33 . Reden: omgezet naar howto topic > euss ]


Verwijderd

omg dat ziet er vet uit >:)

[ Voor 161% gewijzigd door Verwijderd op 24-09-2004 15:43 ]


  • nowell
  • Registratie: Februari 2003
  • Laatst online: 24-03-2024

nowell

Que Pasa!?

En welke meerwaarde geeft dit topic aan het forum? :?

Verwijderd

nowell schreef op 24 september 2004 @ 15:49:
En welke meerwaarde geeft dit topic aan het forum? :?
Dacht ik eigenlijk ook net aan....is dit geen spam? :X

Verwijderd

Het lijkt me beter wat pics en info direct te linken ipv de site zelf.
^^^ met stom als het aankomt op het spamgehalte op deze manier.

  • Phuncz
  • Registratie: December 2000
  • Niet online

Phuncz

ico_sphere by Matthew Divito

Hij geeft een schema en handleidingen om een fancontroller te maken en er beginnen weer mensen te zeiken over spam. Ze moeten voor zo'n mensen een filter hebben. Ondankbaren.

  • Super_ik
  • Registratie: Maart 2001
  • Nu online

Super_ik

haklust!

waarom hang je al die sensors aan elkaar?

8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek


  • M-ThijZ
  • Registratie: Maart 2003
  • Laatst online: 22-11 19:56

M-ThijZ

Riding on Rails

He dat heb je mooi gedaan! Eens even uitgebreid naar je source kijken. Ik ben zelf ook bezig met een projectje met een PIC waarbij ik ook misschien ook nog PWM wil gebruiken.

Verwijderd

Topicstarter
nowell schreef op 24 september 2004 @ 15:49:
En welke meerwaarde geeft dit topic aan het forum? :?
Uhm, volgens mij bespaar ik got alleen maar bandbreedte...

@super_ik, Die sensors zitten om een netwerkje, ze hebben allemaal een eigen adres waar je ze op kan aanspreken

  • TheGhost
  • Registratie: December 2001
  • Laatst online: 02-07 10:04
Verwijderd schreef op 24 september 2004 @ 15:59:
[...]


Uhm, volgens mij bespaar ik got alleen maar bandbreedte...

@super_ik, Die sensors zitten om een netwerkje, ze hebben allemaal een eigen adres waar je ze op kan aanspreken
leuk dat bandbreedte besparen, maar je had de uitleg in je startpost ook wel wat langer en wat duidelijker mogen maken... Ik heb nu de neiging om NIET naar die website te gaan daar de manier waarop je het adres bekent maakt mij totaal niet aanstaat... ('t is alleen maar opbouwende kritiek hoor)

I'm not weird, I'm a limited edition


Verwijderd

Topicstarter
lowrider schreef op 24 september 2004 @ 16:04:
[...]


leuk dat bandbreedte besparen, maar je had de uitleg in je startpost ook wel wat langer en wat duidelijker mogen maken... Ik heb nu de neiging om NIET naar die website te gaan daar de manier waarop je het adres bekent maakt mij totaal niet aanstaat... ('t is alleen maar opbouwende kritiek hoor)
Ok, begrepen, lijkt idd wel wat spammerig maar dat is niet de bedoeling. Ik dacht dat hier niet van die spam berichten geplaats werden.

  • bobo1on1
  • Registratie: Juli 2001
  • Laatst online: 19-10 00:17
Mooi gemaakt hoor, keurig printje en lcd :)

Voor T1 tm T4 zou ik darlintons pakken, je kunt ze nu namelijk maximaal tot 228 mA opensturen en dat is bij een hfe van 250, meestal ligt die zo rond de 100/150 bij die dingen dus dan wordt het maximaal 91/137 mA.
Voor veel fans kan dat te weinig zijn, ik heb hier een 120mm fan die op 12 volt 250 mA nodig heeft.

Of je pakt voor r4 tm r7 gewoon 470 Ohm weerstanden, dan zit je ook goed.

[ Voor 10% gewijzigd door bobo1on1 op 24-09-2004 16:14 ]

Impedance, a measure of opposition to time-varying electric current in an electric circuit.
Not to be confused with impotence.


  • HeepH
  • Registratie: December 2003
  • Laatst online: 20:39

HeepH

Dope Rapper

welke nederlandse winkel heb je dat lcd eigenlijk gehaald?

http://specs.tweak.to/16495


Verwijderd

Topicstarter
HeefStan schreef op 24 september 2004 @ 16:11:
welke nederlandse winkel heb je dat lcd eigenlijk gehaald?
www.htvision.com in groningen

  • M-ThijZ
  • Registratie: Maart 2003
  • Laatst online: 22-11 19:56

M-ThijZ

Riding on Rails

bobo1on1 schreef op 24 september 2004 @ 16:07:
ik heb hier een 120mm fan die op 12 volt 250 mA nodig heeft.
offtopic:
ik heb hier een die op 12v 1.3A gebruikt :+

Verwijderd

Topicstarter
bobo1on1 schreef op 24 september 2004 @ 16:07:
Mooi gemaakt hoor, keurig printje en lcd :)

Voor T1 tm T4 zou ik darlintons pakken, je kunt ze nu namelijk maximaal tot 228 mA opensturen en dat is bij een hfe van 250, meestal ligt die zo rond de 100/150 bij die dingen dus dan wordt het maximaal 91/137 mA.
Voor veel fans kan dat te weinig zijn, ik heb hier een 120mm fan die op 12 volt 250 mA nodig heeft.

Of je pakt voor r4 tm r7 gewoon 470 Ohm weerstanden, dan zit je ook goed.
Klopt, ik heb nu 1k ertussen: Dat wordt dus 5mA * 160 = 800mA

  • bobo1on1
  • Registratie: Juli 2001
  • Laatst online: 19-10 00:17
Verwijderd schreef op 24 september 2004 @ 16:20:
[...]


Klopt, ik heb nu 1k ertussen: Dat wordt dus 5mA * 160 = 800mA
Er staat nog 0,7 volt over de basis-emitter diode, dus door de weerstand loopt maar 4,3 mA.

Impedance, a measure of opposition to time-varying electric current in an electric circuit.
Not to be confused with impotence.


Verwijderd

Topicstarter
bobo1on1 schreef op 24 september 2004 @ 16:21:
[...]


Er staat nog 0,7 volt over de basis-emitter diode, dus door de weerstand loopt maar 4,3 mA.
Oke 688mA dan :) Ik heb het schema geupdate, die 1k blijft lekker zitten want die vormt met de 4u7 condesatortje een filter om het geratel van PWM aangestuurde fans te voorkomen

Verwijderd

Dan is het ook geen PWM-sturing meer...

  • Sine
  • Registratie: Juni 2001
  • Laatst online: 22:27
Niet echt nee ... je bent nu liniair aan het regelen, hang maar eens een scope aan een collector.

Repareren doe je zo.


Verwijderd

Topicstarter
Sine schreef op 24 september 2004 @ 17:47:
Niet echt nee ... je bent nu liniair aan het regelen, hang maar eens een scope aan een collector.
Zucht... Die caps zijn om de hoeken van de pulsen af te halen. Bij de links sectie staat een heel verhaal over lawaait door pwm aansturing

  • [TazZ]
  • Registratie: April 2001
  • Laatst online: 25-06 15:06
Verwijderd schreef op 24 september 2004 @ 17:54:
[...]


Zucht... Die caps zijn om de hoeken van de pulsen af te halen. Bij de links sectie staat een heel verhaal over lawaait door pwm aansturing
True.. normaal gesproken plaats je echter de caps achter de transistor... Zo wordt hij namelijk minder snel ontladen, zodat je inderdaad een bijna lineaire regeling krijgt (met uiteraard wel wat piekjes erop)

If it ain't broke, fix it till it is...


Verwijderd

Verwijderd schreef op 24 september 2004 @ 17:54:


Zucht... Die caps zijn om de hoeken van de pulsen af te halen. Bij de links sectie staat een heel verhaal over lawaait door pwm aansturing
Hoef je niet bij te zuchten, verhaaltjes over lawaai bij PWM sturing kennen we wel...

[ Voor 60% gewijzigd door Verwijderd op 24-09-2004 18:05 ]


  • AcouSE
  • Registratie: Oktober 2000
  • Laatst online: 19-11 15:54

AcouSE

Swedish Chef

Pierre232: iets meer info is wel gewenst hoor. Als jouw site om de een of andere reden verdwijnt is dit topic 0,0 waard. Wil je aub de startpost bijwerken?

  • _l_Arjan_l_
  • Registratie: Oktober 2003
  • Niet online
Wat waren de kosten van het project??

Verwijderd

/me Startpost omgezet naar Howto topic en mirror gemaakt.

Verwijderd

Topicstarter
Verwijderd schreef op 24 september 2004 @ 22:34:
/me Startpost omgezet naar Howto topic en mirror gemaakt.
Wow, flink stukje vertaal werk.. Bedankt.

  • Freekdernatuur
  • Registratie: Juni 2002
  • Laatst online: 14-11 09:00

Freekdernatuur

Kracht door Eenvoud

Ziet er netjes uit...
Wanneer komen de doe-het-zelf-thuis-pakketjes?
En wanneer ga je een nette print etsen?

Verwijderd

Topicstarter
Freekdernatuur schreef op 01 oktober 2004 @ 12:24:
Ziet er netjes uit...
Wanneer komen de doe-het-zelf-thuis-pakketjes?
En wanneer ga je een nette print etsen?
Jahaa, mensen kunnen alvast geld overmaken, dan komen die pakketjes wel over een tijdje.

Enneh een print etsen is zo'n kutwerk als het met gootsteen ontstoppen moet..

Misschien kan iemand eentje voor mij etsen in ruilen voor een geprogrammeerd chippie??

  • WEBsel
  • Registratie: Maart 2001
  • Laatst online: 21:59
Verwijderd schreef op 01 oktober 2004 @ 16:00:
[...]Enneh een print etsen is zo'n kutwerk als het met gootsteen ontstoppen moet..

Misschien kan iemand eentje voor mij etsen in ruilen voor een geprogrammeerd chippie??
Als je in (regio) Utrecht woont wil ik je wel helpen met de produktie.
Het is wel een buitengewoon interessant project.

Asrock Z77Pro4-M, i7 3770K ; Corsair PC3-12800K CMV8GX3M1A1600C11 x2 ; Zotac GeForce GTX1050 Ti 4GB ; Crucial MX500 500GB; Toshiba DT01ACA300 ; HP M375mw ; Synology DS218j + WD60PURZ ; TP-Asus RT-AC68U asuswrt-merlin 386.10 ; Sony Xperia XZ2 P ; Mazda 323


  • TouroLouco
  • Registratie: Juni 2002
  • Laatst online: 30-04 15:18
WEBsel schreef op 01 oktober 2004 @ 19:59:
[...]

Als je in (regio) Utrecht woont wil ik je wel helpen met de produktie.
Het is wel een buitengewoon interessant project.
Absoluut!, ik wis niet dat er op dit forum ook echt koude gasten waren _/-\o_
Zodra ik klaar ben met het leren proggen op de 16F628, ga ik echt hier eens beter naar kijken! Ben nu alleen maar bezig met een deurbel met een paar melodiën, moet eerst nog uitzoeken hoe dat PWM precies werkt..

TouroLouco }:O

p.s. Utreg mijn statjie!
p.s.2 Ik zal een maat van me eens polsen bij TNO, ook wel in voor dit soort ongein
(behoorlijk wat PIC ervaring), die kan het wel voor je etsen.
p.s.3 En voor die gasten die afvragen wat dit hier op tweakers doet: karma -1

AI, if a program makes so many mistakes that it's almost human


  • Paul
  • Registratie: September 2000
  • Laatst online: 22-11 19:27
Schop :P

Ik vind dit een heel interessant topic, en ik wil zelf ook iets dergelijks gaan doen, maar dan met 6 fans en iets om het RPM signaal nog te kunnen gebruiken, mischien ook naar het moederbord maar in ieder geval om een fan-fail te kunnen detecteren.

Ik heb echter 2 vraagjes:
In 3.3 heb je het over de functie delay_us() icm het PWM signaal? De enige plaats waar ik delay_us() tegenkom is in lcd_send_nibble()?

Klopt het dat bij een duty-cycle van 25% je fan 1 seconde uit staat en vervolgens een derde seconde aan staat? Idem dus bij 75%, een derde seconde uit en 1 seconde aan? Levert dat geen opspinnende-fan-geluid op?

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


Verwijderd

Nee, dat klopt niet, als je een pwm signaal hebt van 25 % on dan is het signaal bij een frequentie van 1 hz, 250 ms aan en 750 ms uit, maar een pwm signaal van 1 hz zou dom zijn omdat de fan dan merkbaar sneller en trager gaat, het is veel beter om een pwm frequentie van 1000 hz aan te houden. Om het rpm signaal toch nog te kunnen tellen, zou je het PWM signaal nog iets kunnen opvoeren, naar 5 khz ofzo en dan met je picje kijken hoelang het duurt voordat het signaal hoog en weer laag word, maar dan alleen pollen (kijken of het signaal hoog of laag is) als het pwm signaal hoog is, dit zal wat lastiger worden op een cycle van 25% of lager, maar dan draait je fan ook zowat niet meer dus dat maakt niet zoveel uit. Dan krijg je bijvoorbeeld dat 1 puls 75 ms duurt, dan heb je 60/0,075= 800 omwentelingen per minuut. Dit moet wel te doen zijn met een picje op 20 mhz en een goede code.

Ik snap alleen de condensatoren over de transistoren niet, die laten toch alleen de tranistor meer vermogen dissipieren, hoezo lawaai? of bedoel je storing, ik denk dat een goede condensator dat beter oplost, maargoed dat is mijn idee.

Ow en trouwens, die kast is best wel goed, ik gebruik hem al 1,5 met veel plezier :P

[ Voor 71% gewijzigd door Verwijderd op 04-02-2005 18:33 ]


  • Paul
  • Registratie: September 2000
  • Laatst online: 22-11 19:27
Dat zou dus inhouden dat de code uit de topicstart (want daar had ik het eigenlijk over ;) ) op 78/100 herz loopt? 78 keer per seconde wordt er een interupt aangeroepen (omdat de timer overstroomt), en daarin wordt van 0 naar 100 geteleld, en als duty_cycle lager is dan count wordt de pin laag gezet, is duty_cycle hoger dan wordt de pin hoog gezet?

Ik had al ergens gelezen dat de PWM frequentie van een DC brushless fan best tussen een paar waardes in kon zitten (ben de waardes even kwijt, sorry) en 78 ligt daar wel mooi tussen, maar als ik het goed begrijp zou in bovenstaand systeem de timer geen 78, maar 7800 keer per seconde over moeten lopen?

Waarom ik denk dat hij 78 keer per seconde overloopt:
// This function is called every time the RTCC (timer0) overflows (255->0).(Fosc/(4*256*1*100))
Fosc is 8000000, dat gedeeld door 102400 = 78,125

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


Verwijderd

Hmm, ik snap niet zo heel veel van deze pic programmeer taal, maar als ik het zo lees word 76x per seconde gekeken of een teller al meer is dan de ingestelde waarde en zo word de pwm geregeld, wat volgens mij uitkomt op een schakelsnelheid van 76/100 = 0,76 hertz pwm frequency of zit ik er nou grandioos naast, want dit lijkt mij een nogal lage waarde, maargoed mijn kennis van deze taal is na het lezen van deze broncode met minstens 1000% gestegen :P

[ Voor 83% gewijzigd door Verwijderd op 04-02-2005 22:49 ]


  • Paul
  • Registratie: September 2000
  • Laatst online: 22-11 19:27
Ik denk dat ik hem snap, en dat die *100 er niet tussen hoort :)

De timer loopt ieder keer dat deze 255 bereikt over. Ik neem aan dat die timer iedere bij iedere instructie één hoger wordt, waarna deze dus na 256 instructies overloopt. Iedere instructie kost een PIC 4 kloktikken, waardoor de timer iedere 1024 kloktikken overloopt. 8 miljoen (Fosc) delen door 1024 levert 7812,5 op, wat inderdaad (bij een duty-cycle schaal van 0 tot 100) een PWM-frequentie oplevert van 78,125 Hz :)

Ik vind deze code (is zo te zien gewoon C :) ) erg makkelijk, en het is voor mij de eerste code die laat zien hoe je makkelijk meer-kanaals PWM implementeerd, en nog een heleboel meer (PWM, LCD en drukknoppen in 1 duidelijke howto \o/

Nu moet ik nog uitzoeken hoe ik via i2c bestaande sensoren uit kan lezen :) Waarom een extra temperatuursensor plaatsen als je moederbord, processoren, videokaart, harde schijven etc er al 1 hebben? :)

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


  • deepbass909
  • Registratie: April 2001
  • Nu online

deepbass909

[☼☼] [:::][:::] [☼☼]

ff trapje omhoog

Ik heb dit door zitten lezen, en ik vroeg me 1 dingetje af.
Ik heb zelf een fancontroller gemaakt met een microchip tc64x, welke een bijzonder goede functie heeft, namelijk fanstart. Deze gooit de PWM voor een korte tijd op 100%, alvorens terug te vallen op een lagere snelheid. Het voordeel is dat elke fan opstart (helaas soms hoorbaar, maar is daarna direct stil). Ik weet namelijk zeker dat de meeste fan's bij een PWM van 25% niet zullen starten (40% is zelfs al krap aan).
Misschien een idee op dit in je code mee te nemen.

(ik zit te denken aan een 1 bit's tellertje die op 0 staat als de fan uit is, en voor 1 sec. op 1 gaat wanneer de fan ingestart wordt. Wanneer deze op 1 staat, wordt de fan regeling overruled op 100%, en valt na 1 sec. dus terug op de actieve regeling.)

Waarschuwing, opperprutser aan het werk... en als je een opmerking van mij niet snapt, klik dan hier


  • Paul
  • Registratie: September 2000
  • Laatst online: 22-11 19:27
Fanstart met deze code is ook simpel hoor :)

@ boot eerst de PWM aanzetten (timer + interrupt) op 100%, dan een seconde wachten en dan pas verder gaan met het ophalen van de instellingen en zo :)

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


  • WEBsel
  • Registratie: Maart 2001
  • Laatst online: 21:59
WEBsel schreef op vrijdag 01 oktober 2004 @ 19:59:
Als je in (regio) Utrecht woont wil ik je wel helpen met de produktie.
Het is wel een buitengewoon interessant project.
Vind ik nog steeds. Dus komop, wanneer gaan we etsen :)

Van pierre32 hebben we niks meer vernomen :/

Asrock Z77Pro4-M, i7 3770K ; Corsair PC3-12800K CMV8GX3M1A1600C11 x2 ; Zotac GeForce GTX1050 Ti 4GB ; Crucial MX500 500GB; Toshiba DT01ACA300 ; HP M375mw ; Synology DS218j + WD60PURZ ; TP-Asus RT-AC68U asuswrt-merlin 386.10 ; Sony Xperia XZ2 P ; Mazda 323

Pagina: 1