Sari la conținut
ELFORUM - Forumul electronistilor

Termostat - PIC16F877


catalin004

Postări Recomandate

Da, frumoasa idee...dar spuneti-o pana la capat, adica rosu cand este pe incalzire si verde pe racire?

Pe placa de test cu care lucrez am numai rosii, insa mai am o placa confectionata de mine, tot test, la care am muuulte led-uri...

Link spre comentariu

Da exact o culoare pentru racire si una pentru incalzire dar se poate si cu 2 leduri rosii. Personal prefer leduri bicolore pentru simplul fapt ca se poate vedea de la distanta mai mare starea curenta, nu trebuie sa te uiti care dintre cele doua LED-uri sunt aprinse. Dar daca nu se vrea asta ci doar sa te apropii si sa vezi atunci cam ce se intampla merg fara probleme si 2 led-uri rosii.

Editat de Bandi Szasz
Link spre comentariu

O sa fac ceva pe ecran...la incalzire sa apara un simbol...la racire altul...rosii deja le am pe placuta (semnifica atunci "cand ar cupla releul de incalzire/racire" - nu am montate relee)repet este doar de test...singura problema am acea veche treaba cu afisarea ....o sa postez un video mai tarziu cu problema, poate nu ma exprim prea bine...alta este vizibil

Link spre comentariu

Da, daca ati incercat si cu un filtru pe ADC si face la fell atunci sunt 2 optinui, ori mariti timpul de achizitie a datelor sa zicem se fac masuratori timp de 1s si doar dupa se face mediere si afisare sau tensiune de referinta externa de 2.5V pentru a marii rezolutia ADC. La 5V o diferenta de 0.5C inseamna doar 1 singura valoare ADC care este cam putin si nu prea se poate obtine o citire stabila fara un numar mai mare de citiri pe un domeniu de timp mai mare.

Link spre comentariu

Buna dimineata...am problema cu modificarea set_temp la apasarea butoanelor....cand apas plus sau minus imi creste/scade temperatura setata foarte repede...adica daca tin o secunda se duce pa 50 de grade imediat...sa-i fac delay-ul la taste mai mare?

 

Multumesc

Link spre comentariu
const char character0[] = {21,14,4,31,4,14,21,0};
void CustomChar0() {
 static char i;
  Lcd_Cmd(64);  //aici 64
  for (i = 0; i<=7; i++) Lcd_Chr_CP(character0[i]);
  Lcd_Cmd(_LCD_RETURN_HOME);
}

const char character1[] = {4,12,30,31,27,27,14,0};
void CustomChar1() {
 static char i;
  Lcd_Cmd(72);//aici 72???
  for (i = 0; i<=7; i++) Lcd_Chr_CP(character1[i]);
  Lcd_Cmd(_LCD_RETURN_HOME);
}
 

Am facut un heather pentru 2 caractere....un fulg si o flacara....as dori sa stiu de ce difera in program LCD_Cmd 64 apoi 72...daca ar mai fi alt caracter s-ar aduna cu 8:

 

 

Link spre comentariu

Exista doua variante pt buton, unul ar fi cu delay iar cealalta varianta ar fi cu verificarea eliberarii butonului deci pt fiecare incrementare trebuie apasat mai apoi eliberat butonul. Pentru a doua varianta gasiti exemplul in codul postat de mine sau in libraria button din MikroC.

 

Acea valoare indica locatia de memorie unde va fi stocata caracterul in LCD, fiecare caracter ocupa 8octeti (byte)

Link spre comentariu

Adica este un pointer acea valoare?nu inteleg de ce nu sunt egale...in fine...

 

Cu butonul am rezolvat, am facut incrementul de 0.03...delay-ul este de 10ms, am facut si cu intrerupere la 200ms, insa crestea rapid in cele 200ms apoi se astepta s treaca iar 200, si dadea urat pe display...cu acest increment creste frumos, nici prea lent si nici rapid.

 

Mai trebuie sa fac ceva cu miscarea aceea a temperaturii, am bagat temporizare pe afisare, insa la comanda releului nu, si face urant releul, decupleaza si cupleaza odata cu fluctuatia, filtrul nu rezolva nimic....

 

Varianta a doua am vazut-o la dvs in program, interesanta, insa trebuie apasat la fiecare increment...e mai comod sa tin apasat si sa creasca/scada

Editat de catalin004
Link spre comentariu

Acea valoare indica zona de memorie unde se stocheaza acel caracter, daca am da exact acea valoare de fiecare data am suprascrie caracterul scris initial. E aceasi lucru ca cu orice mediu de stocare, o anumita informatie se stocheaza in locatii diferite. Modulul LCD nu are un incriment intern sa zica ca aici am deja stocata un caracter si pe urmatorul il stochez in alta parte, de acea trebuie sa ii indicam noi in ce locatie de memorie sa-l stocheze, valoarea 64 inseamna ca caracterul se va stocha in memorie pe locatiile 64-71, si de acea urmatorul caracter trebie salvat cu locatie incepand de la 72.

 

Cu stabilitatea probabil merita incercat o referinta externa de 2.5V

Link spre comentariu

Iesirea LM-ului nu ar trebuii sa depaseaca referinta da oricum pe iesire are 10mv/C deci la 1V ar indica 100C. Unele PIC-uri au referinta interna, 16F877 nu cred ca are deci trebuie unu-l extern legat de PIN-ul Vref+ si configurat registrul de ADC. Pentru test merge o referinta cu divizor, pentru stabilitate se poate folosii un regulator de tensiune ( sunt unele speciale pentru tensiuni de referinta). Intrarea de ADC va suporta in continuare 5V deci nu este problema daca LM-ul urca peste 2.5V doar ca ADC-ul va indica valoarea maxima.

Editat de Bandi Szasz
Link spre comentariu

Am inteles....multumesc mult...revin cu rezolvarea problemei

 

cred ca are Vref intern...

Analog Features:
• 10-bit, up to 8-channel Analog-to-Digital
Converter (A/D)
• Brown-out Reset (BOR)
• Analog Comparator module with:
- Two analog comparators
- Programmable on-chip voltage reference
(VREF) module
- Programmable input multiplexing from device
inputs and internal voltage reference
- Comparator outputs are externally accessible

Editat de catalin004
Link spre comentariu

Acela este doar pentru comparator nu se poate folosii si pentru ADC. Vedeti diagrama 11-1 pe pagina 113 pentru circuitul intern ADC. Prin registrii PCFG3:PCFG0 se poate selecta Vref intre VDD si PIN-ul Vref+, nu exista legatura catre referinta interna

Editat de Bandi Szasz
Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum
×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări