ArduShop.ro

ArduShop.ro
cod tehnic.go.ro_02 reducere 5%, pentru vizitatorii paginilor mele !

luni, 15 mai 2017

Sistem de automatizare incubator oua

    Fata de sistemele clasice pentru incubatoare care regleaza doar temperatura, la solicitarea lui Viorel Sosa, un roman plecat peste mari si tari, am modificat proiectul de termostat cu higrostat prezentat AICI, pentru a fi folosit ca automatizare pentru un incubator cu termostatare (mentinere temperatura in domeniul dorit, mentinere umiditate in domeniul dorit, rotire oua la anumita perioada de timp si un anumit timp, avertizare neincadrare in domeniul dorit pentru temperatura si umiditate, indicare numar zile ramas pana la eclozare oua, etc.
   Schema de testare deriva din cea din articolul mentionat la inceput, Termostat cu control umiditate (higrostat) - partea a 2-a, adaugandu-i un led pentru a-mi indica cand este alimentat motorul si un led cand temperatura sau umiditatea sunt mult in afara domeniului dorit.
   Pentru inceput am adaptat sketch-ul pentru a roti motorasul periodic (in mod normal de la o ora la 24 re, in teste al pus de la 1 minut la 24 minute), timp reglabil de la 3 secunde la 60 secunde, asta se intampla daca se incarca sketch-ul eggincubator_1c.ino.
   In filmuletele urmatoare se vede modul de functionare si reglare parametrii:
termostat incubator cu Arduino
egg incubator with Arduino
  Daca incarc sketch-ul eggincubator_1d.ino am si partea de indicare e erorii de temperatura sau umiditate (apare o si steluta in dreptul temperaturii sau umiditatii).
  In filmuletele urmatoare se vede modul de functionare si reglare parametrii:
termostat incubator cu Arduino (2)
egg incubator with Arduino (2)
   Tot Viorel mi-a atras atentia ca trebuie ca intrarea in meniul de reglare parametrii sa se faca doar daca se apasa lung butonul MENIU (MENU)  deoarece in cazul meniu, automatul pastreaza starile si nu mai functioneaza c aun termoastat, asa ca am introdus aceasta facilitate, adaugand si aceea de a iesi din meniu dupa un anumit timp, pentru a elimina problema asta.
   Sketch-ul eggincubator_1e.ino are modificari, dupa cum se vede si in filmuletele urmatoare:
incubator cu Arduino (3)
egg incubator with Arduino (3)
    Am mai adaugat si partea de a elimina alarma sonora daca se apasa unul din butoanele fara retine de scade sau crestere. Dupa revenirea in parametrii s aparitia unori diferente mari de temperatura sau umiditate alarma acustica reaprare, putand fi iar oprita temporar...
   In mod normal pe ecran avem indicatia:
    Daca este depasita temperatura se stinge ledul corespunzator (in cazul meu verde), iar daca depasirea temperaturii e prea mare (la fel si daca este prea scazuta temepratura) apare o steluta dupa temepratura si se aprinde un led rosu (pinul corespunzatro actioneaza un avertizor acustic, sirena)
   Daca se apasa pe butonul de - sau + dispare avertizarea sonora (se stinge ledul rosu), dar pe ecran ramane steluta pana temperatura revine in parametrii:
   Daca s-a depasit pragul de temperatura, se aprinde ledul galben, care indica depasirea umiditatii, in acelsi timp se comnda un releu care deschide o ferestra, un orificiu pentru elimnare umiditate excesiva, dar daca se depaseste prea mult umiditatea sau scade prea mult, se aprind eledul rosu, avand si avertizare acustica, car poate fi intrerupta prin apasarea unuia din butoanele - sau +, pe ecran ramane o steluta care dispare doar cand umiditatea este normala.
 
   Pentru a intra in meniu s eapsa butonul MENIU/MENU mai multe secunde, daca se apasa prea putin apare un semnul ! intre indicatiile de temperatura si umiditate:
iar daca apasarea este sufinet de lunga apare scurt un punct
 si apoi intra in reglajul temperaturii
   Aceasta s epoate regla din butoane + si -, apoi se apasa butonul MENIU/MENIU pentru a trece la histerezisul de temperatura (intervalul d etemepratura acceptat sa scada temepratura dorita)
  Urmeaza reglaj umiditate si histerezis umiditate
   Urmeaza intervalul intre rotiri ale oualelor (intre o ora si 24 ore)
si timpul de rotire (intre 3 secunde si 1 minut):
  Se regleaza intervalul acceptat de temepratura (sau extremele temperaturii, fata de  cea reglata, dorita):
apoi intervalul de la umiditatea;
   Dupa apasare buton MENIU/MENU se revine la functionarea normala sau daca in tinterval de 60 secunde de la intrarea in meniul de reglaj.
   Toate acestea se  realizeaza datorita versiunii imbunatatite de program (sketch) eggincubator_1f.ino dupa cum se vede in filmuletele

16.05.2017
   Am modificat un pic, dupa ce am mai discutat cu Viorel si acum apare timpul pana la o urmatoarea rotirea oualelor, in loc de timpul scurs de la pornire:
   Acest lucru apare cand incarcam programul eggincubator_1g.ino si sistemul de automatizare functioneaza ca in filmuletele urmatoare:

17.05.2017
   Am mai testat la ultimuls sketch (eggincubator_1g.ino) sa vad la partea de rotire oua si am mai facut un filmulet numit incubator cu Arduino (6) unde se observa ca e ok (pentru teste in loc d eore de asteptat intre rotiri am pus minute):
  Deaorece eu testez pe afisaj LCD1602 cu interfata i2c, iar Viorel cu una paralela, cum e in schema de mai sus, am zis sa fie programul mai universal si sunt 2 zone care trebuie activate sau comentate (ignorate), una in partea de definire si una in cea de setup:
1) pentru afisaj i2c:
2) pentru afisaj legat paralel (clasic):
   Viorel a folosit o placa Arduino Uno, punand si partea de comanda, pentru rezistenta de incalzire, avertizor acustic, etc:

53 de comentarii:

  1. Bună ziua Nicu,
    ești un geniu, ești prea puternic, instrucțiunile tale sunt la un nivel înalt și explică foarte bine, te face să vrei să îți dai seama de demonstrațiile tale impresionante.

    Vă mulțumim cu adevărat pentru împărtășirea dvs., respect deosebit.

    RăspundețiȘtergere
  2. Buna ziua!

    Ca sa fie ca la carte se poate adauga un intrerupator centrifugal pe axul ventilatorului ca sa conditioneze functionarea rezistentei de incalzire si avertizare stare(functionarea fara ventilator poate duce la incendiu),o mini statie de preparare a aerului (creare a umiditatii) tinand cont ca spre sfarsitul perioadei de incubatie trebuie marita umiditatea(ultimele 3 zile) si eventual daca incubatorul este mai mare posibilitatea de trecere pe manual a motorului de intoarcere pentru un acces mai usor.(Daca se poate face si un LOG e perfect)


    Spor in continuare.

    RăspundețiȘtergere
  3. could you please post this into English

    RăspundețiȘtergere
    Răspunsuri
    1. push buton for translate in english or your language.. is upper side in right side...

      Ștergere
  4. Salutare
    Cum pot sa intru in contact cu dumneavoastra?

    RăspundețiȘtergere
  5. Salut !
    Am incercat sa folosesc programele d-voastra dar pe afisajul 1602A apar numai patratele sau niste semne aleatorii si ciudate ?Care sa fie problema? Multumesc !

    RăspundețiȘtergere
    Răspunsuri
    1. cu alt program apar informatii corecte? e legat clasic sau pe i2c? ati verificat lipiturile (legaturile) intre Arduino si afisaj? ati reglat contrastul?

      Ștergere
  6. Salut!
    Am folosit atat 1602A cat si afisajul I2C QAPASS,pe primul apar pe cele 2 randuri J J...,sau n n (cu liniuta deasupra) ,sau numai patratele,pe celalalt nu afisaza nimic.Am incercat tot felul de lybrarii pentru I2C.
    Am testat afisajul I2C si pe alte programe dar primesc mesajul de eroare :'NEGATIVE' was not declared in this scope(sau POZITIVE).Ce se poate face?
    Multumesc!
    Nelu N.

    RăspundețiȘtergere
  7. daca imi dati mailul, va trimit libraria pentru afisajul pe i2c, dar trebuie sa rulati progranul i2c scanner (il gaseste goagalul pe site-ul Arduino) pt a afla adresa interfetei gen 0x27, 0x3F)

    RăspundețiȘtergere
  8. Am facut manevra cu cautatul adresei si a aparut mesaj cu 63 si 0x3F
    Am facut tot felul de schimbari cu librariile I2C ,dupa ce am mai citit pe internet .Pe afisaj sunt trei contacte A0,A1,A2 ,cred ,care nu sunt lipite mai departe.
    Nelu Nastasoiu ,nastasoiu@hotmail.com.

    RăspundețiȘtergere
    Răspunsuri
    1. v-am trimis libraria folosita de mine pe mail... incercati prima data exemplul din librarie schimband adresa in 0x3F

      Ștergere

  9. hello Nicu
    I made the project very nice, but I'm having strange symbols on the screen and I'm having problems with the lock I've used a couple of different i2c libraries Something has not happened Sometimes it keeps getting locked up and this is the cause of the problem and you are sending the i2c library you used to me.
    Thank you. kursatboduc@gmail.com

    RăspundețiȘtergere
    Răspunsuri
    1. Hi, I send you on mail library for LCD(1602) on i2c

      Ștergere
  10. Va salut,
    cum pot intra in posesia schemei electrice complete a proiectului realizat de catre D-voastra? Comanda pt motorul ce roteste ouale poate fi si gen, stanga dreapta? adica la fiecare comanda sa se inverseze polaritatea de alimentare a motorului?
    Ar mai fi o mica chestie, ouale nu se intorc in primele si ultimele 3 zile, Softul creaat de catre D-voastra stie sa faca si acest lucru?
    adresa mea de mail este mitica_nicu@yahoo.com

    Multumesc.

    Paste fericit!

    RăspundețiȘtergere
  11. schema e completa, partea mecanica poate fi ca cea de stergator sau continuu... automatul nu stie sa faca deosebirea pt rotire, dar puteti pune un comutator pt decuplare...

    RăspundețiȘtergere
  12. In primul rand va multumesc pt raspunsul D-voastra prompt, ar mai fi intrebarea referitoare la perioada in care automatul nu trebuie sa intoarca ouale, automatul stie de treaba asta? in caz ca nu, se poate introduce si aceasta optiune in program?

    Sarbatori fericite!

    RăspundețiȘtergere
  13. Buna ziua,
    revin cu alte intrebari:
    As vrea sa cumpar cele necesare pt acest proiect si as avea rugamintea sa ma ghidati in alegerea interfetei Arduino, daca pot sa-i spun asa! in principiu as dori sa cumpar o interfata cat mai mica ca si dimensiuni si totodata cat mai ieftina, nu doresc sa o folosesc in alte proiecte, vreau sa o folosesc strict pt proiectul conceput de catre D-voastra.
    Mai exact: (sketch) eggincubator_1f.ino, - incubator cu Arduino (4).

    Va multumesc.

    RăspundețiȘtergere
  14. lasati-o pe sfarsitul saptamanii ... nu pot momentan

    RăspundețiȘtergere
  15. hi i done all as u told works good i want to know how to connect buzzer and finel sketch and ur pcb design

    RăspundețiȘtergere
    Răspunsuri
    1. you van use active buzzer instead led for error ? I not made pcb design...

      Ștergere
  16. Pai bine bre nea Nicu, hister-ul pe partea de temperatura este degeaba?
    Am incarcat si verificat fiecare sketch in parte si oha austare !
    Sa fie vre-o eroare in program?!

    Stima.

    RăspundețiȘtergere
    Răspunsuri
    1. if (te > tes)
      {
      if (heat == 1) digitalWrite(temppeste, LOW);
      if (heat == 0) digitalWrite(temppeste, HIGH);
      }
      if (tes - dete > te)
      {
      if (heat == 0) digitalWrite(temppeste, LOW);
      if (heat == 1) digitalWrite(temppeste, HIGH);
      }

      Ștergere
  17. Buna seara.
    Ce spui mata mai sus este corect, si este deja scris in sketch dar, din pacate acest reglaj nu functioneaza, poate ma luminati dvs unde-i baiul!

    Stima.

    RăspundețiȘtergere
  18. Buna ziua.
    Am setat de la 1 la 10 pe rand si nu sa schimbat nimic in afisarea temp! la higrostat este functional.
    multumesc.

    RăspundețiȘtergere
    Răspunsuri
    1. pai nu afiseaza, trebuie sa faca schimbarea cu histerezisul impus... din pacate nu mai am montajul facut, dar o sa-l refac ca vad ca prezinta interes si o sa si imbunatatesc programul...

      Ștergere
    2. Buna seara dl Nicu.
      Uitati cum am procedat eu;
      In camera respectiva sunt 3 termometre care arata la fel temp de +27*, cel al proiectului arata +25*, eu am intrat in meniul de hister la tem si am urcat valoarea de la 1 treptat pana la 10, aici nu ar fi trebuit sa arate o diferenta? adica sa se apropie de temp reala? ( ca si senzori sa folosit atat DS18B20 cat si DHT22AM2302B.
      Iar referitor la faptul ca prezinta interes si pt altii, asta denota ca este un proiect foarte bine gandit,util si muult mai performant decat ce au in dotare incubatoarele de pe piata roamneasca.
      Ca si incheiere, daca ar mai fi ceva de adaugat acestui proiect, dati-mi voie sa vin si cu ceva sugestii:
      Partea cu intorsul ouale, ar fi bine sa se tina cont de primele si ultimele 3 zile, de asemenea foarte important este si inversarea polaritatii motorului ( puteti combina cu montajul cu doua relee folosit de d-voastra in proiectul acela cu sera ). Un ceas reeal cum ar fi DS3231 fiind un ceas ok si cu ceva memorie in caz ca vom avea nevoie de mai multa. Sincer eu de cum am vazut acest proiect am si facut comanda pe arduino shop pt cele necesare, acum nu pot sa spun decat ca astept cu interes modernizarea si imbunatatirea acestui proiect minunat.

      Multa stima pt munca si efortul depus!

      Ștergere
    3. nu inteleg cum reglati histerezisul de la 1 la 10 cand el incepe de la 0,1 grade ???
      if (digitalRead(BUT1) == LOW)
      { dete = dete - 0.1;
      delay(250);
      }
      if (digitalRead(BUT2) == LOW)
      { dete = dete + 0.1;
      delay(250);
      }
      // delay(15);
      if (dete < 0.1) dete = 0.1;

      Ștergere
    4. Pt nea Nicu:
      nu inteleg cum reglati histerezisul de la 1 la 10 cand el incepe de la 0,1 grade ???
      Am setat incepand cu dt=0,1* pana la dt=20,0*, prin tatonare si temperatura finala afisata nu creste sau scade pe afisor.
      Poate nu am inteles eu bine, marind valoarea histerului nu ar fi trebuit ca pe afisor sa am o temperatura mai mare decat cea reala?
      Eu zic ca nu merge, oricum sunt convins ca se va rezolva atunci cand timpul va va permite si restul modificarilor de sketch.

      Stima.

      Ștergere
  19. Misto rau, io am un incubator cleo chior si cu ajutorul autorului de ce nu l-as automatiza nitel?!


    Bravo nea Nicu.

    RăspundețiȘtergere
    Răspunsuri
    1. Gata, am incropit montajul cu un Arduino Nano, LCD 1602 cu Interfata I2C, DHT22AM este cam puturos la crestere scadere temperatura asa ca am renuntat la el si am optat pt DS18B20 ( acesta are avantajul ca indica imediat fluctuatiile de temperatura, la DHT22 lucreaza foarte lent),m-am pregatit si cu un ceas DS3231 in cazul in care autorul il va implementa si pe acesta. In teste pana acum merge misto, nu am facut nimic inca la partea de miscare oua, nu dispun de sistem motor biela manivela sa ca cel al stergatorului de parbriz, in schimb am un motor pas cu pas si unul cu reductor dar la acesta iese prea mare tigania facand inversarea de polaritate cu ci logice. Asa ca mai asteptam pana ce dl autor va avea timp.

      Multumim de proiect dl Nicu.

      Ștergere
  20. Salutare,

    Vazand cum lumea devine din ce in ce mai interesata de proiectul D-voastra, inseamna ca acesta revine in top pe lista celui mai cautat si ma face din ce in ce mai nerabdator sa vad cum il veti upgrada, in caz ca aveti timp poate pe langa sfaturile altora, tineti cont si de cateva din parerile mele.

    Va multumesc si astept cu interes!

    RăspundețiȘtergere
    Răspunsuri
    1. din pacate, sunt foarte ocupat acum si nu am timp de el... trebuie sa am si dispozitie sa scriu la cod... sper sa pot sa ma reapuc de proiect peste 2-3 saptamani

      Ștergere
  21. Pt Nicusor Ochila, nici la higro nu mere hister. Asta nu ai vazut? oricum cine are cu ce compara cat de exacta este afisata umiditatea. Temp da, cam trebuie sa fie cat mai aproape de realitate!
    Ura!
    Apropo, frumos proiect. Cat despre dotari si functii, se putea si mai bine, gen rasuceste ouale si ceva tonuri melodice frumoase la fiece activitate de program.......

    RăspundețiȘtergere
    Răspunsuri


    1. if (has > hass)
      {
      if (dry == 1) digitalWrite(umidpeste, HIGH);
      if (dry == 0) digitalWrite(umidpeste, LOW);
      }
      if (has < hass - dehas)
      {
      if (dry == 0) digitalWrite(umidpeste, HIGH);
      if (dry == 1) digitalWrite(umidpeste, LOW);
      }

      are histereziz la umiditate... are rasucice de oua, nu canta :))))

      Ștergere
    2. La răsucire poate se face referire la inversare sens motor. Iar la a canta, probabil sa faca ca si cocoșul 🤣. Sau poate bib bib.....

      Ștergere
    3. Domnu-le mitica nicu, vreti sa spuneti ca nu v-ar place ca atunci cand aparatul este pus in functiune acesta sa emita un sunet? sau la inceperea ultimelor trei zile sa avertizeze pt a sti ca sa scoti ouale din alveole si sa le asezi pe gratar? sau la intrarea in meniu si apasarea butoanelor? Cat despre cantatul cocos-ului, nu este cazul!!!
      Ura!

      Ștergere
  22. Si daca tot vrem sa avem ceva frumos ar fi super fain si comanda pt rezistenta sa o faca tot Arduino, evident ca cmanda trebuie sa fie controlata in impulsuri si ca putere sa folosim un triac. Asta ca sa scapam de comanda rezistentei pe care o are incubatorul si care este destul de eronata plus ca din cand in cand mai trebuie surubarit semireglabilul pt a ajusta temp care este cand mare cand mica!
    In rest, asteptam initiatorul proiectului sa ia o decizie.

    RăspundețiȘtergere
    Răspunsuri
    1. de ce credeti ca nu e in impulsuri si de ce nu se poate comanda cu triac.. unde e LED-ul de scrie "temperature" se pune un optocuplor MOC3021 cu triac (schema simplificata, ca rezistenta de incalzire nu ar eparte inductiva) - http://specs.buho.ch/Electronics/Discreet/TRIAC_MOC3021/MOC3021/MOC3021_BT136_03.png

      Ștergere
    2. Buna seara.
      Schema mentionata ar fi ok dar, faptul ca am folosi in locul ledului optocuplorul acesta nu stie decat 1 sau 0, adica ledul se aprinde si rezistenta este alimentata continuu atata timp cat ledul este aprins. Aici ma refeream la impulsuri ( de altfel cam cum functioneaza schema clasica a incubatorului folosind termistorul pt a nu cupla si decupla rezistenta, daca ati vazut rezistenta este alimentata pana in apropierea temp, apoi atunci ea este alimentata in impulsuri scurte sau lungi in functie de tem sesizata. ) Ma gandesc ca daca noi ridicam brusc sa zicem temp la un 37,5 - 38grade atunci nu va fi ok pt oua!

      Ștergere
    3. nu vreau sa fiu rau, dar asta exact asa face... cand ajunge la temperatura dorita tot asa face,, stins, aprins, stins, aprins.. microcontrolerul e foarte rapid si ruleaza repede, e "lenevit" din soft

      Ștergere
    4. ati putea testa cu incinta fara oua... dar testati nu mai fiti asa carcotasi...

      Ștergere
    5. Aveti dreptate, nu sa testat. Maine voi testa si voi confirma.
      Vad ca mai multe persoane doresc sunete, cred ca ar fi utile. In cazul in care este greu de scris cod pt diferite sunete, puteti face din cod ca la functiile unde se cer sunete sa aprinda/stinga un led? si de aici fiecare isi va pune propriul generator de ton pe functia care o doreste.
      Multumesc.

      Ștergere
    6. nu e greu de implementat cu sunete, doar ca sunt extraordinar de ocupat ca timp (serviciul de baza + unul de 2 ore dupa, proiecte incepute ce trebuie terminate ca vin sesiunile de iunie-iulie, plus unu'-doua proiecte cu Arduino)... cand scap, sper ca in 2-3 saptani, refac montajul si fac modificari prin program sa iasa ceva bun...

      Ștergere
    7. Atunci asteptam, cum spuneti, sa iasa ceva bun!
      Multumiri si spor la treaba!

      Ștergere
    8. Atunci Dl.Nicu sa ne auzim cum veti avea timp sa ne ajutati.
      O seara placuta!

      Ștergere
    9. Salutare din nou,
      Zilele acestea au facut teste asa cum spune mai sus Dl.Nicu Florica, proiectul cu rezistenta de incalzire cuplata si schema din link-ul D-lui Nicu Florica se comporta cam asa:
      Temp din interiorul incubatorului fiind 38,0grade afisorul i2c arata 37,2grade, termometrul cu care este dotat incubatorul arata 38,0grade. Deci avem asa, la punere in functiune cam dupa o ora de functionare temp se stabilizeaza intre 37,5 si 38,5grade cu senzorul DS18B20. Cu senzorul DHT22 avem 37,5-39.0grade, treaba este ca acesta fiind mai lent la citirea temp fluctuatiile sunt cam mari si as recomanda sa se mearga pe DS18B20 ca cititor de temp, acesta are avantajul de a reactiona mult mai rapid ( incepand cu 0,1grade ). Am mai incercat sa folosesc pt incalzire montajul incubatorului care intr-adevar mentine o temp fara fluctuatii insa, acesta are dezavantajul ca la cateva zile temp nu mai ramane 38,0 grade, ori coboara la 37,5 ori urca la 38,5grade unde ramana asa pt cateva zile apoi se modifica iar si iar. Din cate am vazut si masurat, cu montajul incubatorului la punerea in functiune, rezistenta este alimentata continuu in momentul cand se apropie de temp setata acesta incepe sa alimenteze rezistenta cu intreruperi ( impulsuri ) daca am putea optine si noi de la Arduino acest lucru ar fi de nota 10. In caz ca nu este prea complicat!

      Salutari!

      Ștergere
    10. Cred ca totul se datoreaza inertiei termice!

      Ștergere
  23. Interesanta aceasta automatizare de incubatie, Cred ca ma apuc s-o fac si eu. Cu toate ca am doar un motor cu reductor :))
    Dimineata merg la cumpparaturi sa iau restul.
    Intrebare pt initiator, cu arduino se poate comanda si rezistenta de incalzire asa cum spune Nikol? faina treaba.

    Bravo dl niq_ro.....

    RăspundețiȘtergere
    Răspunsuri
    1. asa a fost gandita, sa fie cu triac.. http://specs.buho.ch/Electronics/Discreet/TRIAC_MOC3021/MOC3021/MOC3021_BT136_03.png

      Ștergere
  24. Buna seara. Asa cum mi-am propus am cumparat cele necesare si m-am apucat de treaba, ce-i drept mult mai tarziu decat am promis. Totul merge perfect numai ca asa cum spunea si altii mai devreme, sunt ceva probleme cu histerul dar nu cred ca este mare bai, il rezolva nea Nicu :), Ce vreau sa mai spun este ca si eu am incercat ca si Nikol cu rez cuplata si la fel variatiile de temp, treaba este ca temp nu sta fixa pe 38 grade variaza intre 38 si 39,4 grade. Mentionez ca eu folosesc ca si senzor de tempp DHT22.
    Acum nu-mi ramane decat de asteptat pana ce va putea Dl Nicu sa completeze, modernizeze proiectul pana atunci motorul cu reductor asteapta sa fie si acesta legat. Evident ca si acesta functioneaza la montajul creeat de Dl Nicu doar ca stie decat inainte :D

    Multumiri inca odata D-lui Nicu Florica.

    RăspundețiȘtergere
  25. OOOOO, very nice! vad ca acest proiect este inca in voga si lumea asteapta la coada:))

    Like, Like, Like.................

    RăspundețiȘtergere