This commit is contained in:
2021-06-16 17:38:28 +02:00
parent 4c8ac7f1ba
commit 13d468e62c
27 changed files with 36998 additions and 0 deletions

Binary file not shown.

View File

@ -0,0 +1,277 @@
:1000000012C0189518951895189518951895189563
:100010001895189518951895189518951895189578
:100020001895189518958FE58DBFC0E4E0E44E2E25
:1000300084E08EBFD4E0F4E05F2EEEEFF3E0A0E6C4
:10004000B0E088278D933197E9F7E7D366248FEFE7
:1000500087BBB99A83E88FBD81E08EBDA098A19837
:10006000A298A398A498AC9AA598AD9A86E086B970
:1000700080E487B980B7806180BF889A899AE6E971
:10008000F0E088E416D458E0C895802D0CD4319661
:100090005A95D1F704C00E0A0E2020202020E6EB4E
:1000A000F0E080E506D458E0C895802DFCD3319669
:1000B0005A95D1F704C0040A150404040404E6EDBB
:1000C000F0E088E5F6D358E0C895802DECD3319662
:1000D0005A95D1F704C00404040404150A048CE002
:1000E000E8D384E690E011D4A2ECB0E0EAEDF0E1D0
:1000F0005FD3ACECB0E0EEEDF0E15AD3A8ECB0E0A9
:10010000E2EEF0E155D3A0EDB0E0E2EEF0E150D345
:1001100082E390E0A4EDB0E08D939C93A6EDB0E077
:10012000E6EEF0E145D3E4E0F0E0BB27A0E180D7C4
:100130000F3F09F012C0EAEEF0E174D6E0E0F0E023
:10014000ADE0BB2794E07BE765D7E4E0F0E0A0E119
:10015000BB278AEA8C937BE75AD7ADE9B0E0E0E0B1
:10016000F0E094E068D784EF91E0CFD3F894909AD0
:10017000919A27D084EF91E0AAEDB0E08D939C9303
:10018000AAEDB0E08D919C9190934B0080934A0032
:100190008CE08FD328D38FE712E034D3EAE0F1E18B
:1001A0001CD3E5E0F0E030D31ED3909A0AD057D2AA
:1001B000EDD168D0909884E690E0A7D3F6CFF8947C
:1001C000FFCF379AEAE6F0E0AEE6B0E014D781E47C
:1001D000806487B988D4A0E6B0E08D939C9383E4D3
:1001E000806487B980D4A8E8B0E08D939C93EEEE4C
:1001F000F0E121D6E0E6F0E0D190E080FF24002796
:10020000DDD47ED5FF27EDE0A2E6B0E0F4D6E2EF44
:10021000F0E111D6E2E6F0E0ADD472D5FF27EDE0D3
:10022000A6E6B0E0E8D6E6E6F0E0AAE6B0E0E3D67F
:10023000EEEEF0E100D6E8E8F0E0D190E080FF24B7
:100240000027BCD45DD5FF27EDE0AAE8B0E0D3D607
:10025000E6EFF0E1F0D5EAE8F0E08CD4FBD4FF273C
:10026000EDE0AEE8B0E0C7D6EAEFF0E1E4D5EEE8C5
:10027000F0E080D445D5FF27EDE0AEE8B0E0BBD696
:1002800037980895EAE6F0E075D4E2EBF0E077D431
:10029000DBD510F009F001C005C0A2ECB0E0EEEF34
:1002A000F0E186D2EAE6F0E065D4EDE9F0E067D46B
:1002B000CBD510F009F034C08FE719E0A3D283E06A
:1002C000F2D2EAE6F0E056D4EEEBF0E058D4BCD53A
:1002D00008F01EC0AAEDB0E00D911C91A4EDB0E0B5
:1002E0004D915C91041B150BAAEDB0E00D931C938E
:1002F000AAEDB0E00D911C91003050E015070CF410
:1003000001C006C080E090E0AAEDB0E08D939C9320
:10031000AAEDB0E08D919C9190934B0080934A00A0
:10032000EAE6F0E027D4EAEBF0E029D48DD510F02E
:1003300009F001C0E6C08FE719E064D282E0B3D2D1
:10034000EDE9F0E01CD4EAE6F0E014D40AD5FF278A
:10035000EDE0A0EDB0E04FD6E6EDF0E010D4E0ED3A
:10036000F0E008D4CDD4FF27EDE0A0EDB0E043D617
:10037000E0EDF0E0A9D6FF27EDE0BED3A4EDB0E0BC
:10038000EE0C000FE794DD92EC92A4EDB0E00D913D
:100390001C91013050E015070CF401C006C081E04B
:1003A00090E0A4EDB0E08D939C93EAE6F0E0E2D318
:1003B000EEE6F0E0E4D348D510F009F001C00EC03D
:1003C000AAEDB0E00D911C91A4EDB0E04D915C91CF
:1003D000040F151FAAEDB0E00D931C93EAE6F0E0C0
:1003E000C9D3EEE6F0E0CBD32FD508F00EC0AAEDCE
:1003F000B0E00D911C91A4EDB0E04D915C91041B17
:10040000150BAAEDB0E00D931C93EAE6F0E0B2D331
:10041000EEE6F0E0B4D318D509F00CC0AAEDB0E0D8
:100420000D911C914AE050E0040F151FAAEDB0E0B9
:100430000D931C93AAEDB0E00D911C910F3F53E07A
:10044000150714F009F001C006C08FEF93E0AAED84
:10045000B0E08D939C93AAEDB0E00D911C9100301B
:1004600050E015070CF401C006C080E090E0AAED52
:10047000B0E08D939C93AAEDB0E08D919C91909308
:100480004B0080934A00EAE6F0E074D3E2EBF0E040
:1004900076D3DAD408F035C0919AEAE6F0E06FD36B
:1004A000E2EBF0E067D35DD4FF27EDE0ACEDB0E028
:1004B000A2D5ECEDF0E063D3E8ECF0E05BD3CAD377
:1004C000FF27EDE0A2ECB0E096D5ECECF0E057D3DE
:1004D000E2ECF0E04FD314D4FF27EDE0A2ECB0E063
:1004E0008AD5E2ECF0E046D3E8ECF0E048D3ACD4B7
:1004F00010F009F001C005C0E8ECF0E0A2ECB0E0BB
:100500007AD5EAE6F0E036D3E2EBF0E038D39CD4DB
:1005100010F009F001C006C09198A2ECB0E0EEEF37
:10052000F0E146D1E2ECF0E0CFD5FF27EDE0E4D2F8
:10053000A6ECB0E0EE0C000FE794DD92EC92A6EC96
:10054000B0E00D911C91003050E0150714F009F057
:1005500001C01BC080E090E0ACEAB0E08D939C93BA
:10056000A6ECB0E04D915C91ACEAB0E00D911C912D
:100570000417150714F009F008C084E690E0C5D10F
:100580006ED0ACEAB0E01BD1EBCF0895A8E2B4E0A6
:10059000AF93BF93E6E6F0E0EDD2C6D111E001E003
:1005A000BF91AF9174D4E8E2F4E0ADE7B0E01ED5BE
:1005B000A8E2B4E0AF93BF93EEE8F0E0DBD2B4D1B1
:1005C00011E001E0BF91AF9162D4E8E2F4E0A2E96A
:1005D000B0E00CD5A8E2B4E0AF93BF93EDE9F0E052
:1005E000C9D2A2D111E001E0BF91AF9150D4E8E2AD
:1005F000F4E0A1EAB0E0FAD48FE711E003D1EAE138
:10060000F1E1EBD0ADE7B0E0E2D081E04CD1EEE13A
:10061000F1E1E3D08FE71AE0F5D0E0E2F1E1DDD0DF
:10062000A1EAB0E0D4D0E4E2F1E1D7D08FEB11E061
:10063000E9D0A2E9B0E0CBD0E6E2F1E1CED08FEB99
:1006400019E0E0D0ECE2F1E1C8D0A8E2B4E0EAEDD4
:10065000F0E07BD4BAD0E4E2F1E1BFD00895BB274B
:10066000A3E38C9184FBAEEAB0E0882780F98D93F8
:1006700088278C93BB27A3E38C9185FBA0EBB0E08C
:10068000882780F98D9388278C93AEEAB0E00D918E
:100690001C91003050E0150709F01AC0ADE9B0E038
:1006A000EEEDF0E1C8D3EDE9F0E064D269D3FF27C5
:1006B000EDE0ADE9B0E09FD4E0E0F0E0ADE9B0E01E
:1006C00094E07BE7A7D491988CE291E01ED1919AB7
:1006D000A0EBB0E00D911C91003050E0150709F03F
:1006E00018C0EEEDF0E1A7D3EDE9F0E043D239D345
:1006F000FF27EDE0ADE9B0E07ED4E0E0F0E0ADE969
:10070000B0E094E07BE786D491988CE291E0FDD054
:10071000919AEDE9F0E02ED2EEEDF0E18CD394D396
:1007200008F005C0ADE9B0E0EEEDF0E141D0EDE953
:10073000F0E020D2E2E0F1E17ED386D310F009F0C0
:1007400001C005C0ADE9B0E0E2E0F1E131D0EEED8D
:10075000F0E171D3EDE9F0E00DD212D3FF27EDE027
:10076000AAEBB0E048D4EEEDF0E165D3EDE9F0E0BE
:1007700001D2F7D2FF27EDE0AEEBB0E03CD4E6E0EB
:10078000F1E159D3EAEBF0E0F5D1FAD2FF27EDE041
:10079000A2EBB0E030D4E6E0F1E14DD3EEEBF0E0D7
:1007A000E9D1DFD2FF27EDE0A6EBB0E024D4089535
:1007B00084E0C89531960D928A95D9F70895ED9108
:1007C000FC913196FC93EE930895A8E2B4E08D91EC
:1007D000882311F068D0FBCF089520D3802D11F02D
:1007E00062D0FBCF089581E064D014D080E861C06E
:1007F0008FE7213039F08FEB223021F08FE8233062
:1008000009F08FEC810F55C088EE93E07ED03197D0
:10081000D9F7089583E0992778C08AEF90E075D0E2
:100820008F9A8E9A8D9A8C9A8B9A8A9A9298EF9335
:10083000FF93E4ECF0E05DD0FF91EF9193989798EF
:100840009698959A949A939AEF93FF93E4ECF0E03C
:1008500050D0FF91EF91939855D0939AEF93FF93D7
:10086000E4ECF0E046D0FF91EF9193984BD0939A4F
:10087000EF93FF93E4ECF0E03CD0FF91EF9193987D
:1008800041D09498939AEF93FF93E4ECF0E031D049
:10089000FF91EF91939836D088E20BD08EE009D08B
:1008A00086E007D00895929A829505D004D02AD088
:1008B00008959298F9CF859510F4949A01C0949870
:1008C000859510F4959A01C09598859510F4969A9F
:1008D00001C09698859510F4979A01C09798939ABD
:1008E000EF93FF93E4ECF0E004D0FF91EF91939845
:1008F00008953197F1F70895689462F80895E8949F
:1009000062F8089581E090E000C0EF93FF93EE2736
:10091000E82BE92B31F0E0EDF7E03197F1F70197A3
:10092000D1F7FF91EF9108958DE207FD8D938F2D03
:10093000881F802F881F8F57082F6894F7F8802F03
:1009400087FF15C080958395082F80E38D938EE2F5
:100950008D93802F815228F080E38D9399279C936B
:10096000089544270A95802F09F192D01FC0805224
:1009700030F09EE49D9381E48D939D93EFCF4427C7
:10098000DF92EF92FF920F938FE1801B11F0082FFF
:100990007FD085D09EE29D930F91FF90EF90DF90E6
:1009A00044270395003209F4D7CF27D03F93E0E3E3
:1009B000FAE038E12F2D1E2D0D2DFF24EE24DD242D
:1009C0004427000F111F221F88F42F923F9226D236
:1009D000102C24D2202C22D2302C20D23197410D41
:1009E000D21CE31CF01C3F902F9001C0339631962F
:1009F0003A9539F73F9107D0B3CFDD0CEE1CFF1CC1
:100A00000A95D9F70895002719E058D08F93802BC5
:100A100011F0039501C08F911A95B9F7802F8823A3
:100A200009F49ACF8F91805D8D930A95D9F796CF6F
:100A30000065CD1D80B2E60E40597307A0ACB90326
:100A400050D6DC01286BEE0094357700CA9A3B0043
:100A500065CD1D00B2E60E0059730700ACB9030066
:100A6000D6DC01006BEE0000357700009A3B0000F9
:100A7000CD1D0000E60E000073070000B903000062
:100A8000DC010000EE000000770000003B000000E9
:100A9000F694E794D79447950A95D1F708950027DF
:100AA0000DD08F9303958F2D8E298D29842BC1F71F
:100AB0008F91805D8D930A95D9F750CF1F930F9337
:100AC000002710E2440FDD1CEE1CFF1C001F802FCE
:100AD0009AE0890B10F0082F43951A9599F7802F0B
:100AE0000F911F910895369A3699FECF369A36990E
:100AF000FECF84B195B108953DD0992711278F2D50
:100B0000880F80E8F82A802F881F08F41FEF41F033
:100B10008F57082F07FD04C0003240F08FEF01C04F
:100B20008827982FD82EE82EF82E09C08FE1801B39
:100B3000082FF694E794D79497950A95D1F7112347
:100B400051F09095D094E094F09481E0980F88272C
:100B5000D81EE81EF81E0F2DFE2CED2CD92E089560
:100B6000D094E094F09491E0D90E9927E91EF91EF3
:100B700010950895D190E190F190019108952191FF
:100B80003191419151910895102F90E8FF0C001F71
:100B90000927990FF7941078652F90E8440F551F97
:100BA0005927990F4795607800380895FF0C90E811
:100BB0009027110F9795F794092F0895102FBD2CAA
:100BC000DE2CEF2CF02E11234AF4B094D094E09454
:100BD000F0949FEFB91AD90AE90AF90A0EE1FF2049
:100BE00039F4FE2CED2CDB2CBB240850C2F766C078
:100BF00032F00A95BB0CDD1CEE1CFF1CF9CF01D0B6
:100C0000D5CFB7FE089590E8B91611F4D0FE089537
:100C10009FEFD91AE90AF90A09F403950895502FAC
:100C20002D2D3E2D4F2D612F08952DEC3CEC4CECDD
:100C30005DE366270FC09EDFF2DFDD24EE2490E83F
:100C4000F92E0FE307C09BDF05C02227332740E2C0
:100C500051E46627552351F1002381F195DF71F1AD
:100C60001627005850580894050B18F407FD03C0C8
:100C700025C007FD23C0469537952795F694E79440
:100C8000D79422D0FF202AF0DD0CEE1CFF1C01506F
:100C900073F09D2D969548F0DD203AF4EE202AF46D
:100CA00091E0D90E9927E91EF91E80CF07C09FE772
:100CB000092FF92A9FEFD92EE92E0895DD24EE247D
:100CC000FF240027112708959F929924AA24BB246A
:100CD00088E1D216E306F40628F0D21AE30AF40AF1
:100CE000089401C08894991CAA1CBB1CDD0CEE1C46
:100CF000FF1C8A9571F7D92CEA2CFB2C9F90089544
:100D000043DFE1F25038D1F21627005850580894CA
:100D1000051F12F418F4CBCF08F0D0CF0AD0FF2073
:100D20002AF0BB0CDD1CEE1CFF1C40CF0F5FFBF15B
:100D30003DCF9F929924AA24BB24992788E1990C3E
:100D4000AA1CBB1CDD1CEE1CFF1C30F4920EA31E63
:100D5000B41ED91EE91EF91E8A9589F79F90089541
:100D60000EDF12DF503829F090E869270CC00AF036
:100D700045D01CCF5FE322273327442701C0FFDE85
:100D800003DF5038B1F3003899F3902F951B8BF3A4
:100D900012F434D0FACF983118F0222733274427A1
:100DA000983028F0232F342F44279850F9CF9923D7
:100DB00029F04695379527959A95D9F7912F96273B
:100DC00042F014D0B0F6F794E794D7940F5F8BF607
:100DD0006ECF10D051F008F4C3DEFF2052F2DD0CCC
:100DE000EE1CFF1C0150CBF762CF68CFD20EE31E82
:100DF000F41E0895D21AE30AF40A0895DF92EF92DE
:100E0000FF920F931F93D22EE32EF42E052F162F51
:100E10006F915F914F913F912F910895C8953196B1
:100E200000200895FBDFD02CF9DFE02CF7DFF02C59
:100E3000F5DF002D0895F2DF202DF0DF302DEEDFFD
:100E4000402DECDF502D089507FB00680EF40F775E
:100E500057FB50680EF45F7707FD02C057FF05C0CF
:100E6000D216E306F406050708952D153E054F0535
:100E70005007089599278D9193958823E1F79395CD
:100E800011968C9311978E919A95D1F70895EA2F28
:100E9000FB2F00244C918D9103948E32E1F71124A5
:100EA0008D9113948823E1F71A94101640F411974A
:100EB000202F2119239580E38D932A95E9F711308E
:100EC00039F59927AE2FBF2FA00DB91FA00FB91F5D
:100ED0008C919C93853308F421C031E08E918E3241
:100EE000E9F38D3241F0830F8A3319F480E331E066
:100EF00001C033278C93AE1789F7332341F0AE2F0F
:100F0000BF2FB8DF81E34D3209F431968083089515
:100F10008827E00DF81FE00FF81F80830895000F69
:100F2000111F221F331F08950095109520953095AD
:100F30000F5F1F4F2F4F3F4F0895019110810EC03B
:100F400001911191219130810BC00191108117FF06
:100F500005C03FEF2FEF04C0008111272227332760
:100F600037FF03C0E1DF8DE28D93CF93DF93CF9204
:100F7000DF92EF92AA24BB24CC24DD24EE2440E2AD
:100F8000CAE0DD2755E093E38881890F87FD9F70D4
:100F900083FD907F891B89935A95A9F7C0DFAA1C0E
:100FA000BB1CCC1CDD1CEE1C4A9551F7E894EFE00D
:100FB000FF2782910ED0EB30E0F71EF068948A2D67
:100FC0000CD088278D93EF90DF90CF90DF91CF9159
:100FD0000895982F829501D0892F8F70805D26F01B
:100FE000803309F4089568948D93089581918D93C9
:100FF0008823E1F7089594E081918D939A95E1F724
:101000000895E199FECFEEBBFFBB3196089591E0C4
:1010100001C092E07B3751F47FB7F894F2DF8D91F5
:101020008DBBE29AE19A9A95C9F77FBF7727089519
:1010300091E001C092E0E5DFE09A8DB38D939A953F
:10104000D1F7089597DD80E003C094DD802F80788C
:10105000882321F0DF92EF92FF920F938F9394DD1C
:10106000802F839512F42ADE1BC080958A95885EB6
:101070000AF415C088501AF40CD0D92210C0DD240F
:1010800088501AF406D0E9220AC0EE2402D0F922D0
:1010900006C09FEF8770990F8A95EAF7089586DD5D
:1010A0008F918823D9F35F914F913F912F910F93A7
:1010B000CBDE0F9199F390F302D0506861CE5FE3DD
:1010C00040E833272227089555DD0F930F7752DE2E
:1010D000BDDF8F918078082B08950000C841000083
:1010E000803F00004842000020410000F041000025
:1010F000A03B0000C8429A99993F00007A44000042
:1011000000000000C642000080404C7565667465B2
:10111000722050574D2056330000493A00004300DA
:1011200020533A0020006D412020000050776D3A96
:021130000000BD
:00000001FF

View File

@ -0,0 +1,3 @@
rem Internal RC-OSC wird auf 8 MHz eingestellt
avrdude -p m8 -c stk200 -U flash:w:luefter3.hex -U lfuse:w:0xE4:m

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -0,0 +1,16 @@
In Luefter3.bas gibt es folgende Erweiterungen
- Erweiterung der Darstellung auf dem LCD
- Anzeige des Grad-Celsius-Symbols
- Anzeige des Temperatur-Trends mit Pfeil oben/unten
- Speichern der Solltemperatur im EEPROM nach <20>ndern derselben
- Beim Start: Lesen der Solltemperatur aus dem EEPROM
- Umstellung von 1 MHz auf 8 Mhz Prozessortakt
bedeutet: Fusebits entsprechend setzen bei der Programmierung
f<>r avrdude liegt eine Batch-Datei anbei, die ndas erledigt

View File

@ -0,0 +1,335 @@
'******************************************************************************
'PWM Lueftersteuerung 17.07.2009
'Luefter_V3 - Erweiterungen: Matthias Foth
'
'Sollwert wird im EEPROM gespeichert
'
'Atmel Controller ATmega8
'AVCC Pin20 an +5V
'AREF Pin21 an +5V
'AGND Pin22 an GND
'
'Temperatur- Sensor LM35 an PC1
'Taster "Down" an PC5
'Taster "UP" an PC4
'LCD 16x2 an Port D
'LED gr<67>n an PD0
'LED rot an PD1
'IRF510 an PB1
'******************************************************************************
'$sim
$regfile = "m8def.dat" ' ATMega8
$crystal = 8000000 ' 8 MHz intern
'$crystal = 1000000 ' 1 MHz intern
Const Const5 = 0.0048828125 ' 5V / 1024 (10-Bit-ADC)
Dim Adc1 As Word ' Wert vom LM35
Dim Volt1 As Single ' Volt vom LM35
Dim Templm35 As Single ' Temperatur (celsius) von LM35
Dim Isttemp As Single ' aktuelle Temperatur in Celsius
Dim Letzter_isttemp As Single ' Messwert davor
Dim Disp_volt1 As String * 10 ' zur LCD-Anzeige
Dim Disp_templm35 As String * 10 ' zur LCD-Anzeige
Dim Adc3 As Word ' Wert vom ADC vom IRF510
Dim Volt3 As Single ' Volt vom IRF510
Dim Strom As Single ' Strom vom IRF510
Dim Disp_strom As String * 10 ' zur LCD-Anzeige
Dim Solltemp As Single ' Vorgabe der maximal zul<75>ssigen Temperatur
Dim Disp_solltemp As String * 10 ' zur LCD-Anzeige
Dim I As Integer ' Z<>hler / Schleife
Dim E_solltemp As Eram Single 'EEPROM Variable
Dim Eramempty As Eram Byte 'Flag wenn EEPROM noch leer ist
Declare Sub Adc_in
Declare Sub Regeln
Declare Sub Anzeigen
Declare Sub Tasten
Config Lcdbus = 4
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Config Portb = Output
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Prescale = 1
Taste_up Alias Pinc.4
Taste_dn Alias Pinc.5
Dim Tasteup As Integer
Dim Tastedn As Integer
Config Pinc.0 = Input
Config Pinc.1 = Input
Config Pinc.2 = Input
Config Pinc.3 = Input
Config Pinc.4 = Input
Set Portc.4
Config Pinc.5 = Input
Set Portc.5
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Set Sfior.adhsm 'ADC high speed mode ATmega8
Config Portd.0 = Output
Config Portd.1 = Output
Ledgruen Alias Portd.0
Ledrot Alias Portd.1
Deflcdchar 1 , 14 , 10 , 14 , 32 , 32 , 32 , 32 , 32 ' creating <20> Symbol for Degree Centigrade
'Deflcdchar 1 , 24 , 24 , 3 , 4 , 4 , 4 , 4 , 3 'creating "<22>C" character (1)
'Deflcdchar 1 , 24 , 24 , 32 , 3 , 4 , 4 , 4 , 3 'creating "<22>C" character (1)
Deflcdchar 2 , 4 , 10 , 21 , 4 , 4 , 4 , 4 , 4 'creating "arrow top" char (2)
Deflcdchar 3 , 4 , 4 , 4 , 4 , 4 , 21 , 10 , 4 'creating "arrow down" char (3)
Cursor Off
Waitms 100
Dim Dynamikgrenze_oben As Single
Dim Dynamikgrenze_unten As Single
Dim Toleranzgrenze_oben As Single ' in den Toleranzgrenzem wired nicht geregelt
Dim Toleranzgrenze_unten As Single
Dim Pausenzeit As Single ' Pause zwischen den Regelungen
Dim Pausenzeit_int As Integer
Dim Pausenzeit_max As Single ' max. zul<75>ssige Pausenzeit
Dim Pausenzeit_faktor As Single
Dim Schrittweite As Single ' um diesen Betrag wird PWM korrigiert
Dim Schrittweite_int As Integer
Dim Schrittweite_faktor As Single
Dim Pwmwert As Integer ' 10-Bit PWM (0...1023)
Dim Differenz As Single
Const Eramemptymask = 255 'If EEprom is empty it contains 255
Const Eramfilledmask = 170 'If EEprom is filled it contains 170
' ------------------------------------------------------------------------------
' ----------------------- Initialisierung der Variablen ------------------------
' ------------------------------------------------------------------------------
Pausenzeit = 25 ' zu Beginn mittlere Pausenzeit einstellen (2 Sek.)
Pausenzeit_faktor = 1 ' Multiplikator f<>r die Bestimmung der Pausenzeit
Pausenzeit_max = 50 ' z.B. 50 * 1/10 Sek. = 5 Sekunden
Schrittweite = 50 ' Anfangswert
Schrittweite_int = 50 ' Anfangswert
Schrittweite_faktor = 10 '
'-------------------------------------------------------------------------------
' EEprom operations
'-------------------------------------------------------------------------------
If Eramempty = Eramemptymask Then 'Default settings
E_solltemp = 30 'Solltemp im EEPROM speichern
Eramempty = Eramfilledmask
End If
Solltemp = E_solltemp 'Daten aus EEPROM lesen
Waitms 500 'warte 500ms
Disable Interrupts
' ------------------------------------------------------------------------------
' Beginn Programm
' ------------------------------------------------------------------------------
Set Ledgruen ' gr<67>ne LED aus
Set Ledrot 'rote LED aus
Call Adc_in 'Analogwerte erstmals abfragen
Pwmwert = 500
Pwm1a = Pwmwert ' L<>fter halbe Kraft voraus
Cursor Off
Cls
Locate 1 , 2
Lcd "Luefter PWM V3"
Wait 5
Cls
Do
Set Ledgruen 'LED gr<67>n aus
Call Adc_in
Call Tasten
Call Anzeigen
Call Regeln
Reset Ledgruen 'LED gr<67>n an
Waitms 100
Loop
End 'end program
'-------------------------------------------------------------------------------
Sub Adc_in ' ADC lesen
Start Adc
Letzter_isttemp = Isttemp ' letzten Messwert merken
Adc1 = Getadc(1) ' LM35
Adc3 = Getadc(3) ' f<>r Strom IRF510
Volt1 = Adc1 * Const5 ' LM35
Templm35 = Volt1 * 100 ' in Celsius umrechnen (10mV je Grad <20>ber Null)
Isttemp = Templm35 ' aktuelle Temperatur am LM35
Volt3 = Adc3 * Const5 ' Strom durch den IRF510 berechnen
Strom = Volt3 / 1.2 ' I = U / R R=1,2 Ohm
Strom = Strom * 1000 ' Ampere in mA
Stop Adc
End Sub
Sub Regeln
' Pausenzeit au<61>erhalb Dynamikbereichs einstellen
If Isttemp > Dynamikgrenze_oben Then
Pausenzeit = 0 ' k<>rzest m<>gliche Pause
End If ' dann schnell regeln
' Temperatur unterhalb Solltemperatur
If Isttemp <= Solltemp Then ' Temp ist k<>lter als erlaubt
Locate 1 , 9
Lcd Chr(3)
If Isttemp < Toleranzgrenze_unten Then ' unterhalb Toleranzgrenze ?
Pwmwert = Pwmwert - Schrittweite_int ' versuchen, ob L<>fter leiser werden kann
If Pwmwert < 0 Then
Pwmwert = 0
End If
End If
Pwm1a = Pwmwert
End If ' endif isttemp < solltemp
' Bereich oberhalb Solltemperatur
If Isttemp > Toleranzgrenze_oben Then ' Temp zu hoch, PWM-Wert steigern
Locate 1 , 9
Lcd Chr(2)
' Schrittweite berechnen, um die der PWM-Wert korrigiert wird
Schrittweite = Isttemp - Solltemp
Schrittweite = Schrittweite * Schrittweite_faktor
Schrittweite_int = Round(schrittweite)
If Schrittweite_int < 1 Then
Schrittweite_int = 1
End If
If Isttemp > Letzter_isttemp Then
Pwmwert = Pwmwert + Schrittweite_int
End If
If Isttemp < Letzter_isttemp Then
Pwmwert = Pwmwert - Schrittweite_int
End If
If Isttemp = Letzter_isttemp Then
Pwmwert = Pwmwert + 10
End If
If Pwmwert > 1023 Then
Pwmwert = 1023
End If
If Pwmwert < 0 Then
Pwmwert = 0
End If
Pwm1a = Pwmwert ' PWM des Motors steuern
If Isttemp < Dynamikgrenze_oben Then ' im Regelbereich, in dem die Pausenzeit angepasst wird
Set Ledrot ' rote LED aus
' Pausenzeit berechnen f<>r (Toleranzgrenze oben < x < Dynamikgrenze oben)
Differenz = Dynamikgrenze_oben - Isttemp
Pausenzeit = Pausenzeit_max / Differenz
Pausenzeit = Pausenzeit * Pausenzeit_faktor
If Pausenzeit > Pausenzeit_max Then
Pausenzeit = Pausenzeit_max
End If
' nun steht in Pausenzeit die Pausenzeit 1/10 Sekunden
End If
End If ' if Toleranzgrenze_oben < Isttemp
If Isttemp > Dynamikgrenze_oben Then ' Ist > als Dynamikgrenze oben, also SEHR hoch
Reset Ledrot ' warnen
Pausenzeit = 0
End If
Pausenzeit_int = Round(pausenzeit) ' Pausenzeit (SINGLE) in INTEGER wandeln
If Pausenzeit_int > 0 Then ' Pausenzeit vergehen lassen
For I = 0 To Pausenzeit_int
Waitms 100 ' Zeit verplempern in Einheiten von 1/10 Sekunde
Call Tasten
Next I
End If
End Sub
Sub Anzeigen
Disp_templm35 = Fusing(templm35 , "##.#")
Disp_strom = Fusing(strom , "###.#")
Disp_solltemp = Fusing(solltemp , "###.#")
Locate 1 , 1 ' LCD 2x16
Lcd "I:" ; Disp_templm35 ;
Lcd Chr(1) ; "C";
Locate 1 , 10
Lcd " S:" ; Disp_solltemp ; " "
Locate 2 , 1
Lcd Disp_strom ; "mA "
Locate 2 , 9
Lcd "Pwm:" ; Pwmwert ; " "
End Sub
Sub Tasten
Tasteup = Taste_up
Tastedn = Taste_dn
If Tasteup = 0 Then
Incr Solltemp
E_solltemp = Solltemp
Reset Ledrot
Waitms 300
Set Ledrot
End If
If Tastedn = 0 Then
Decr Solltemp
E_solltemp = Solltemp
Reset Ledrot
Waitms 300
Set Ledrot
End If
If Solltemp < 1 Then
Solltemp = 1
End If
If Solltemp > 99 Then
Solltemp = 99
End If
Toleranzgrenze_oben = Solltemp + 1
Toleranzgrenze_unten = Solltemp - 1
Dynamikgrenze_oben = Toleranzgrenze_oben + 4
Dynamikgrenze_unten = Toleranzgrenze_unten - 4
End Sub