🌟 Atualização do Nosso Site! 🌟

Olá a todos os nossos queridos usuários visitantes,

Estamos emocionados em compartilhar que acabamos de fazer uma atualização em nosso fórum para melhor atender às suas necessidades! Trabalhamos duro para tornar sua experiência ainda mais agradável e eficiente.

No entanto, sabemos que, às vezes, até mesmo as melhores mudanças podem trazer alguns pequenos contratempos. Por isso, pedimos a sua ajuda. Se você encontrar qualquer erro, bug, ou algo que simplesmente não pareça certo, por favor, não hesite em nos informar.

Nossa equipe está aqui para garantir que tudo funcione perfeitamente para você, e sua ajuda é fundamental para isso. Sinta-se à vontade para entrar em contato conosco através da nossa página de contato. Suas observações e feedback são extremamente valiosos.

Agradecemos por fazer parte da nossa comunidade e por nos ajudar a tornar o nosso fórum ainda melhor!

Com gratidão,
Brasilreef

Dosadora com Arduino em construção

Se você quer mostrar um projeto seu o local certo é esse, abuse das explicações e fotos.
Responder
Mensagem
Autor
Antonio Miranda
Diplectrum formosum
Diplectrum formosum
Mensagens: 4
Registrado em: 01 Ago 2011, 21:32
Apelido: Miranda
Data de Nascimento: 13 Jun 1977
Cidade: São Paulo
País: Brasil

Dosadora com Arduino em construção

#1 Mensagem por Antonio Miranda »

Segue meu projeto de dosadora com arduino.


Imagem

[BBvideo 640,480]http://youtu.be/dTmZUf51iqU[/BBvideo]

Codigo fonte usado:

Código: Selecionar todos

// -- Dosadora -- By Antonio Ricardo Carreira Miranda
//
// -- Versao 1.2 20-04-2014
//
// Saidas porta 9-canal1 -- 10-canal2 -- 11-canal3
//
//* LCD RS pin to digital pin 7
// * LCD Enable pin to digital pin 6
// * LCD D4 pin to digital pin 5
// * LCD D5 pin to digital pin 4
// * LCD D6 pin to digital pin 3
// * LCD D7 pin to digital pin 2
// * LCD R/W pin to ground
// * 10K resistor:
// * ends to +5V and ground
// * wiper to LCD VO pin (pin 3)
//
// teclado porta A0
//
// DS1307 portas A5 A4
//
//
//
//
//
//
//
// ----------------------------------------------------

#define _BTA(a) (a >= 0 && a < 25) // +
#define _BTB(a) (a > 100 && a < 150) // -
#define _BTC(a) (a > 250 && a < 320) // ok
#define _BTD(a) (a > 420 && a < 500) // TESTE
#define _BTE(a) (a > 650 && a < 800) // MENU
static int valor = 0;

#include <Wire.h>
#include <LiquidCrystal.h>
#include <EEPROM.h>
#include "RTClib.h"
RTC_DS1307 RTC;

LiquidCrystal lcd(7, 6, 5, 4, 3, 2);

byte d1 = EEPROM.read(11);;
byte d2 = EEPROM.read(12);
byte d3 = EEPROM.read(13);

byte c1 = EEPROM.read(1);
byte c2 = EEPROM.read(2);
byte c3 = EEPROM.read(3);

int t1 = 0;
int t2 = 0;
int t3 = 0;

byte BOMBA1 = 9;
byte BOMBA2 = 10;
byte BOMBA3 = 11;

byte hora;
byte minuto;



void setup(){
 
  Wire.begin();
  RTC.begin();
  lcd.begin(16, 2);
  pinMode(BOMBA1, OUTPUT);
  pinMode(BOMBA2, OUTPUT);
  pinMode(BOMBA3, OUTPUT);
 
  analogWrite(BOMBA1, 0);
  analogWrite(BOMBA2, 0);
  analogWrite(BOMBA3, 0);
  lcd.clear();
  lcd.print(" Dosadora V1.2  "); // versao programa
  delay(2000);
  lcd.clear();
}


void loop() // ----------------  INICIO ---------------------------------
{
  DateTime now = RTC.now(); 
  lcd.setCursor(4,0);
  digitalClock();
  menu();
  tempo();
  t1 = ((((c1 * 1000) / 10) / 8 ) * d1); // c1 é o tempo em ms para 10ml / 10 (converte em 1ml)  / 8 dosagem * d1(quantidade em ml por dia)
  t2 = ((((c2 * 1000) / 10) / 8 ) * d2);
  t3 = ((((c3 * 1000) / 10) / 8 ) * d3);
   
 
}// ---------------------  END LOOP ------------------------------------------


// ------- MENU -------------------------------------------------------------
char menu() {
 valor = analogRead(0);
  if (_BTE(valor))
  {
   delay(300);
   lcd.clear();
   do // --------------- Dosagem Canal 1 ---------------------------------
     {
      valor = analogRead(0);
      lcd.setCursor(0,0);
      lcd.print("Dosagem Canal 1 ");
      lcd.setCursor(0,1);
      lcd.print("RA: ");
      lcd.print(d1);
      lcd.print("ml  ");
        if (_BTA(valor)) {
        delay(300);
        d1++ ;   
        }
      if (_BTB(valor)) {
      delay(300);
      d1--;     
      }
        if (_BTC(valor)) {
        delay(300);
        lcd.clear();
        lcd.print("Gravando RA   ");
        EEPROM.write(11, d1);
        delay(1000);
        lcd.clear();   
        }
     } while (!_BTE(valor));
     lcd.clear();
     delay(300);
     do // --------------- Dosagem Canal 2 ---------------------------------
     {
      valor = analogRead(0);
      lcd.setCursor(0,0);
      lcd.print("Dosagem Canal 2 ");
      lcd.setCursor(0,1);
      lcd.print("CA: ");
      lcd.print(d2);
      lcd.print("ml  ");
        if (_BTA(valor)) {
        delay(300);
        d2++ ;   
        }
      if (_BTB(valor)) {
      delay(300);
      d2--;     
      }
        if (_BTC(valor)) {
        delay(300);
        lcd.clear();
        lcd.print("Gravando CA   ");
        EEPROM.write(12, d2);
        delay(1000);
        lcd.clear();   
        }
     } while (!_BTE(valor));
     lcd.clear();
     delay(500);
     do // --------------- Dosagem Canal 3 ---------------------------------
     {
      valor = analogRead(0);
      lcd.setCursor(0,0);
      lcd.print("Dosagem Canal 3 ");
      lcd.setCursor(0,1);
      lcd.print("MG: ");
      lcd.print(d3);
      lcd.print("ml  ");
        if (_BTA(valor)) {
        delay(300);
        d3++ ;   
        }
      if (_BTB(valor)) {
      delay(300);
      d3--;     
      }
        if (_BTC(valor)) {
        delay(300);
        lcd.clear();
        lcd.print("Gravando MG   ");
        EEPROM.write(13, d3);
        delay(1000);
        lcd.clear();   
        }
     } while (!_BTE(valor));
     lcd.clear();
     delay(500);
     
     do // --------------- Calibra Canal 1 ---------------------------------
     {
      valor = analogRead(0);
      lcd.setCursor(0,0);
      lcd.print("Calibra Canal 1 ");
      lcd.setCursor(0,1);
      lcd.print("10ml: ");
      lcd.print(c1);
      lcd.print("seg   ");
        if (_BTA(valor)) {
        delay(300);
        c1++ ;   
        }
      if (_BTB(valor)) {
      delay(300);
      c1--;     
      }
        if (_BTC(valor)) {
        delay(300);
        lcd.clear();
        lcd.print("Gravando C1   ");
        EEPROM.write(1, c1);
        delay(1000);
        lcd.clear();   
        }
        if (_BTD(valor)) {
        delay(300);
        lcd.clear();
        lcd.print("Teste   ");
        analogWrite(BOMBA1, 255);
        delay(c1 * 1000);
        analogWrite(BOMBA1,0);
        lcd.clear();   
        lcd.print("Teste Finalizado");
        delay(1000);
       
        }             
     } while (!_BTE(valor));
     lcd.clear();
     delay(500);
 
  do // --------------- Calibra Canal 2 ---------------------------------
     {
      valor = analogRead(0);
      lcd.setCursor(0,0);
      lcd.print("Calibra Canal 2 ");
      lcd.setCursor(0,1);
      lcd.print("10ml: ");
      lcd.print(c2);
      lcd.print("seg   ");
        if (_BTA(valor)) {
        delay(300);
        c2++ ;   
        }
      if (_BTB(valor)) {
      delay(300);
      c2--;     
      }
        if (_BTC(valor)) {
        delay(300);
        lcd.clear();
        lcd.print("Gravando C2   ");
        EEPROM.write(2, c2);
        delay(1000);
        lcd.clear();   
        }
        if (_BTD(valor)) {
        delay(300);
        lcd.clear();
        lcd.print("Teste   ");
        analogWrite(BOMBA2, 255);
        delay(c2 * 1000);
        analogWrite(BOMBA2,0);
        lcd.clear();   
        lcd.print("Teste Finalizado");
        delay(1000);
       
        }             
     } while (!_BTE(valor));
     lcd.clear();
     delay(500);
   
 do // --------------- Calibra Canal 3 ---------------------------------
     {
      valor = analogRead(0);
      lcd.setCursor(0,0);
      lcd.print("Calibra Canal 3 ");
      lcd.setCursor(0,1);
      lcd.print("10ml: ");
      lcd.print(c3);
      lcd.print("seg   ");
        if (_BTA(valor)) {
        delay(300);
        c3++ ;   
        }
      if (_BTB(valor)) {
      delay(300);
      c3--;     
      }
        if (_BTC(valor)) {
        delay(300);
        lcd.clear();
        lcd.print("Gravando C3   ");
        EEPROM.write(3, c3);
        delay(1000);
        lcd.clear();   
        }
        if (_BTD(valor)) {
        delay(300);
        lcd.clear();
        lcd.print("Teste   ");
        analogWrite(BOMBA3, 255);
        delay(c3 * 1000);
        analogWrite(BOMBA3,0);
        lcd.clear();   
        lcd.print("Teste Finalizado");
        delay(1000);
       
        }             
     } while (!_BTE(valor));
     lcd.clear();
     delay(500);
     
     do // --------------- AJUSTE -- RELOGIO -- HORA ---------------------------------
     {
      valor = analogRead(0);
      lcd.setCursor(0,0);
      lcd.print("Ajuste a HORA ");
      lcd.setCursor(0,1);
      digitalClock();
     
        if (_BTA(valor)) {
        delay(300);
        hora++ ;   
       RTC.adjust(DateTime(2014, 4, 18, hora, minuto, 01));
        }
      if (_BTB(valor)) {
      delay(300);
      hora--;     
      RTC.adjust(DateTime(2014, 4, 18, hora, minuto, 01));
      }
                     
     } while (!_BTE(valor));
     lcd.clear();
     delay(500);
     do // --------------- AJUSTE -- RELOGIO -- MINUTO ---------------------------------
     {
      valor = analogRead(0);
      lcd.setCursor(0,0);
      lcd.print("Ajuste a MINUTO ");
      lcd.setCursor(0,1);
      digitalClock();
     
        if (_BTA(valor)) {
        delay(300);
        minuto++ ;
        RTC.adjust(DateTime(2014, 4, 18, hora, minuto, 01));
       
        }
      if (_BTB(valor)) {
      delay(300);
      minuto--;     
      RTC.adjust(DateTime(2014, 4, 18, hora, minuto, 01));
      }
                     
     } while (!_BTE(valor));
     lcd.clear();
     delay(500);
  }
 
}
// --------------- RELOGIO -----------------------------
char digitalClock() {
   
    DateTime now = RTC.now();
    lcd.print(now.hour(), DEC);
    lcd.print(':');
    if (now.minute() < 10) lcd.print('0');
    lcd.print(now.minute(), DEC);
    lcd.print(':');
    if (now.second() < 10) lcd.print('0');
    lcd.print(now.second(), DEC);
     hora = now.hour();
    minuto = now.minute();
}

//------------------ TIMER ---------------------------------------

char tempo() {
    DateTime now = RTC.now();

// ---------- Timmer 01 --------------------------------------------------
 if (now.hour() == 8 && now.minute() == 01 && now.second() == 01) {
     analogWrite(BOMBA1, 255);
     lcd.setCursor(0,1);
     lcd.print("Dosando RA ");
     lcd.print(t1);
     delay(t1);
     analogWrite(BOMBA1, 0);
     lcd.clear();
    }

 if (now.hour() == 8 && now.minute() == 20 && now.second() == 01) {
     analogWrite(BOMBA2, 255);
     lcd.setCursor(0,1);
     lcd.print("Dosando CA ");
     lcd.print(t2);
     delay(t2);
     analogWrite(BOMBA2, 0);
     lcd.clear();
    }
   
   
  if (now.hour() == 8 && now.minute() == 40 && now.second() == 01) {
     analogWrite(BOMBA3, 255);
     lcd.setCursor(0,1);
     lcd.print("Dosando MG ");
     lcd.print(t3);
     delay(t3);
     analogWrite(BOMBA3, 0);
     lcd.clear();
    }
// ---------- FIM Timmer 01 ----------------------------------------------
 

// ---------- Timmer 02 --------------------------------------------------
 if (now.hour() == 10 && now.minute() == 01 && now.second() == 01) {
     analogWrite(BOMBA1, 255);
     lcd.setCursor(0,1);
     lcd.print("Dosando RA ");
     lcd.print(t1);
     delay(t1);
     analogWrite(BOMBA1, 0);
     lcd.clear();
    }

 if (now.hour() == 10 && now.minute() == 20 && now.second() == 01) {
     analogWrite(BOMBA2, 255);
     lcd.setCursor(0,1);
     lcd.print("Dosando CA ");
     lcd.print(t2);
     delay(t2);
     analogWrite(BOMBA2, 0);
     lcd.clear();
    }
   
   
  if (now.hour() == 10 && now.minute() == 40 && now.second() == 01) {
     analogWrite(BOMBA3, 255);
     lcd.setCursor(0,1);
     lcd.print("Dosando MG ");
     lcd.print(t3);
     delay(t3);
     analogWrite(BOMBA3, 0);
     lcd.clear();
    }
// ---------- FIM Timmer 02 ----------------------------------------------
 
// ---------- Timmer 03 --------------------------------------------------
 if (now.hour() == 12 && now.minute() == 01 && now.second() == 01) {
     analogWrite(BOMBA1, 255);
     lcd.setCursor(0,1);
     lcd.print("Dosando RA ");
     lcd.print(t1);
     delay(t1);
     analogWrite(BOMBA1, 0);
     lcd.clear();
    }

 if (now.hour() == 12 && now.minute() == 20 && now.second() == 01) {
     analogWrite(BOMBA2, 255);
     lcd.setCursor(0,1);
     lcd.print("Dosando CA ");
     lcd.print(t2);
     delay(t2);
     analogWrite(BOMBA2, 0);
     lcd.clear();
    }
   
   
  if (now.hour() == 12 && now.minute() == 40 && now.second() == 01) {
     analogWrite(BOMBA3, 255);
     lcd.setCursor(0,1);
     lcd.print("Dosando MG ");
     lcd.print(t3);
     delay(t3);
     analogWrite(BOMBA3, 0);
     lcd.clear();
    }
// ---------- FIM Timmer 03 ----------------------------------------------
 
 
 
// ---------- Timmer 04 --------------------------------------------------
 if (now.hour() == 14 && now.minute() == 01 && now.second() == 01) {
     analogWrite(BOMBA1, 255);
     lcd.setCursor(0,1);
     lcd.print("Dosando RA ");
     lcd.print(t1);
     delay(t1);
     analogWrite(BOMBA1, 0);
     lcd.clear();
    }

 if (now.hour() == 14 && now.minute() == 20 && now.second() == 01) {
     analogWrite(BOMBA2, 255);
     lcd.setCursor(0,1);
     lcd.print("Dosando CA ");
     lcd.print(t2);
     delay(t2);
     analogWrite(BOMBA2, 0);
     lcd.clear();
    }
   
   
  if (now.hour() == 14 && now.minute() == 40 && now.second() == 01) {
     analogWrite(BOMBA3, 255);
     lcd.setCursor(0,1);
     lcd.print("Dosando MG ");
     lcd.print(t3);
     delay(t3);
     analogWrite(BOMBA3, 0);
     lcd.clear();
    }
// ---------- FIM Timmer 04 ----------------------------------------------
 
 
 // ---------- Timmer 05 --------------------------------------------------
 if (now.hour() == 16 && now.minute() == 01 && now.second() == 01) {
     analogWrite(BOMBA1, 255);
     lcd.setCursor(0,1);
     lcd.print("Dosando RA ");
     lcd.print(t1);
     delay(t1);
     analogWrite(BOMBA1, 0);
     lcd.clear();
    }

 if (now.hour() == 16 && now.minute() == 20 && now.second() == 01) {
     analogWrite(BOMBA2, 255);
     lcd.setCursor(0,1);
     lcd.print("Dosando CA ");
     lcd.print(t2);
     delay(t2);
     analogWrite(BOMBA2, 0);
     lcd.clear();
    }
   
   
  if (now.hour() == 16 && now.minute() == 40 && now.second() == 01) {
     analogWrite(BOMBA3, 255);
     lcd.setCursor(0,1);
     lcd.print("Dosando MG ");
     lcd.print(t3);
     delay(t3);
     analogWrite(BOMBA3, 0);
     lcd.clear();
    }
// ---------- FIM Timmer 05 ----------------------------------------------
 
 
 // ---------- Timmer 06 --------------------------------------------------
 if (now.hour() == 18 && now.minute() == 01 && now.second() == 01) {
     analogWrite(BOMBA1, 255);
     lcd.setCursor(0,1);
     lcd.print("Dosando RA ");
     lcd.print(t1);
     delay(t1);
     analogWrite(BOMBA1, 0);
     lcd.clear();
    }

 if (now.hour() == 18 && now.minute() == 20 && now.second() == 01) {
     analogWrite(BOMBA2, 255);
     lcd.setCursor(0,1);
     lcd.print("Dosando CA ");
     lcd.print(t2);
     delay(t2);
     analogWrite(BOMBA2, 0);
     lcd.clear();
    }
   
   
  if (now.hour() == 18 && now.minute() == 40 && now.second() == 01) {
     analogWrite(BOMBA3, 255);
     lcd.setCursor(0,1);
     lcd.print("Dosando MG ");
     lcd.print(t3);
     delay(t3);
     analogWrite(BOMBA3, 0);
     lcd.clear();
    }
// ---------- FIM Timmer 06 ----------------------------------------------
 
 
 // ---------- Timmer 07 --------------------------------------------------
 if (now.hour() == 20 && now.minute() == 01 && now.second() == 01) {
     analogWrite(BOMBA1, 255);
     lcd.setCursor(0,1);
     lcd.print("Dosando RA ");
     lcd.print(t1);
     delay(t1);
     analogWrite(BOMBA1, 0);
     lcd.clear();
    }

 if (now.hour() == 20 && now.minute() == 20 && now.second() == 01) {
     analogWrite(BOMBA2, 255);
     lcd.setCursor(0,1);
     lcd.print("Dosando CA ");
     lcd.print(t2);
     delay(t2);
     analogWrite(BOMBA2, 0);
     lcd.clear();
    }
   
   
  if (now.hour() == 20 && now.minute() == 40 && now.second() == 01) {
     analogWrite(BOMBA3, 255);
     lcd.setCursor(0,1);
     lcd.print("Dosando MG ");
     lcd.print(t3);
     delay(t3);
     analogWrite(BOMBA3, 0);
     lcd.clear();
    }
// ---------- FIM Timmer 07 ----------------------------------------------
 
 
 // ---------- Timmer 08 --------------------------------------------------
 if (now.hour() == 22 && now.minute() == 01 && now.second() == 01) {
     analogWrite(BOMBA1, 255);
     lcd.setCursor(0,1);
     lcd.print("Dosando RA ");
     lcd.print(t1);
     delay(t1);
     analogWrite(BOMBA1, 0);
     lcd.clear();
    }

 if (now.hour() == 22 && now.minute() == 20 && now.second() == 01) {
     analogWrite(BOMBA2, 255);
     lcd.setCursor(0,1);
     lcd.print("Dosando CA ");
     lcd.print(t2);
     delay(t2);
     analogWrite(BOMBA2, 0);
     lcd.clear();
    }
   
   
  if (now.hour() == 22 && now.minute() == 40 && now.second() == 01) {
     analogWrite(BOMBA3, 255);
     lcd.setCursor(0,1);
     lcd.print("Dosando MG ");
     lcd.print(t3);
     delay(t3);
     analogWrite(BOMBA3, 0);
     lcd.clear();
    }
// ---------- FIM Timmer 08 ----------------------------------------------
   
}

 

 


Wilson Jr
Pseudocheilinus hexataenia
Pseudocheilinus hexataenia
Mensagens: 63
Registrado em: 26 Fev 2014, 21:25
Apelido: Wilson Jr
Data de Nascimento: 30 Nov 1987
Cidade: Campo Grande
País: Brasil
Localização: Campinas - SP
Recebeu Curtir: 1 vez

Re: Dosadora com Arduino em construção

#2 Mensagem por Wilson Jr »

Muito legal... =D
Vc tem o esquema elétrico tbm? =D
Gastou quanto nessas bombas?
Valeu... o/

Avatar do usuário
Gary Ewing
Holacanthus clarionensis
Holacanthus clarionensis
Mensagens: 130
Registrado em: 06 Nov 2012, 18:47
Data de Nascimento: 19 Set 1986
Cidade: Santo Andre
País: Brasil
Localização: Santo Andre ,SP
Curtiu: 2 vezes
Recebeu Curtir: 2 vezes

Re: Dosadora com Arduino em construção

#3 Mensagem por Gary Ewing »

plus_icon
Meu Aquario 1,20x50x60
360 litros
PH 8.2
Kh/aik 9
Salinidade 1023
Nitrato 25
Amonia 0
Fosfato 0
Calcio 400

Gutemberg Reis
Pseudocheilinus hexataenia
Pseudocheilinus hexataenia
Mensagens: 70
Registrado em: 10 Fev 2011, 13:38
Apelido: Gutemberg
Data de Nascimento: 03 Ago 1971
Cidade: Salvador
País: Brasil

Re: Dosadora com Arduino em construção

#4 Mensagem por Gutemberg Reis »

Muito bom. A minha marine color tá sempre apresentando defeito vou acompanhar o tópico e tentar fazer uma também. Parabéns.

Antonio Miranda
Diplectrum formosum
Diplectrum formosum
Mensagens: 4
Registrado em: 01 Ago 2011, 21:32
Apelido: Miranda
Data de Nascimento: 13 Jun 1977
Cidade: São Paulo
País: Brasil

Re: Dosadora com Arduino em construção

#5 Mensagem por Antonio Miranda »

Obrigado assim que tiver um tempo eu coloco o esquema
a bomba eu comprei no ebay
no momento eu estou com somente uma que comprei para testar, já comprei mais duas eu esperando chegar.

Avatar do usuário
Denis P Lima
Pomacanthus imperator
Pomacanthus imperator
Mensagens: 830
Registrado em: 13 Out 2010, 14:18
Apelido: Denis
Cidade: São Carlos
País: Brasil
Localização: São Carlos-SP
Curtiu: 220 vezes
Recebeu Curtir: 89 vezes

Re: Dosadora com Arduino em construção

#6 Mensagem por Denis P Lima »

Caro Antonio.

Estava pensando em algo desse tipo esses dias...

Tava pensando de modo um pouco mais simples.

Transformar a a hora do DS 1307 ou 1302 em Segundos.

Calibra o Sistema por Exemplo 10 ml = 5 seg.

24 horas = 86400 seg
O usuario entra com as Dosagens: Ex...50 ml
Qtd de Vezes:...Ex 5 vezes

O calculo fica assim: 86400/5 = 17280 seg. %Variavel Tempo de Cada Dosagem.
50ml/5=10ml=5s %Variavel Qtd .

Supondo que o sistema possa fazer no máximo 10 dosagens diárias.

Então 10 If..

Vou tentar explicar:
10 Variaveis (Vetor) de Tempo Minimo.
10 Variaveis (Vetor) de Tempo Maximo

Um FOR de 1 ate 6 % Sendo 5 quantidade de vezes
{ Sendo assim a cada for carregue o Vetor Tmin[i] com Tmin[i-1]+17280; %Tempo de Cada Dosagem
e o Vetor Tmax[i] com Tmax[i-1]+17280+5; %Tempo de Cada Dosagem+Qtd de Dosagem em Tempo;
{

Depois disso e so escrever esses vetores na EEprom, pode ser um Metodo Salvar.

Agora 10 IFs mais ou menos assim:

Se Tempo Maior que Tmin[1] e Menor que Tmax[1]
{Liga Bomba 1 RA}
Senão
{Desliga Bomba 1}

e assim em diante ate completar 10 timers.

Acho que assim fica mais fácil, ao invés do usuário ter horários fixos de dosagem, ele pode escolher quantas vezes ao dia dosar.

Mas sua atitude de construir usando o Arduino foi excepcional, e seu programa está excelente..Parabéns, não sendo necessário modificações, apenas quis demonstrar o metodo que pensei, mas qualquer um dos dois é valido.

Desculpe não escrever o programa, mais tá complicado para mim esse semana..

Se precisar de algo entre contato.

denis@ufscar.br

Abracos,

Denis
"LASCIATE OGNI SPERANZA VOI CHE ENTRATE"
Dante Aliguieri

"SE VIS PACEM,PARA BELLUM"

PROJETO SKIMMER "BURGER KING": http://www.brasilreef.com/viewtopic.php ... 63#p330563

Tembler Dias
Pseudocheilinus hexataenia
Pseudocheilinus hexataenia
Mensagens: 63
Registrado em: 15 Mai 2013, 23:52
Data de Nascimento: 13 Jan 1976
Cidade: Rio de Janeiro
País: Brasil
Recebeu Curtir: 2 vezes

Re: Dosadora com Arduino em construção

#7 Mensagem por Tembler Dias »

Denis P Lima,
Você tem que pensar também que essas bombas não tem um fluxo exato, podendo variar de bomba pra bomba, então é necessário uma calibragem individual de cada bomba para saber que esta dosando de forma correta.
Se você fizer um ajuste padrão para todas as bombas pode ser que uma bomba dose mais que as outras e vice-versa.

Denis P Lima escreveu:Caro Antonio.

Estava pensando em algo desse tipo esses dias...

Tava pensando de modo um pouco mais simples.

Transformar a a hora do DS 1307 ou 1302 em Segundos.

Calibra o Sistema por Exemplo 10 ml = 5 seg.

24 horas = 86400 seg
O usuario entra com as Dosagens: Ex...50 ml
Qtd de Vezes:...Ex 5 vezes

O calculo fica assim: 86400/5 = 17280 seg. %Variavel Tempo de Cada Dosagem.
50ml/5=10ml=5s %Variavel Qtd .

Supondo que o sistema possa fazer no máximo 10 dosagens diárias.

Então 10 If..

Vou tentar explicar:
10 Variaveis (Vetor) de Tempo Minimo.
10 Variaveis (Vetor) de Tempo Maximo

Um FOR de 1 ate 6 % Sendo 5 quantidade de vezes
{ Sendo assim a cada for carregue o Vetor Tmin[i] com Tmin[i-1]+17280; %Tempo de Cada Dosagem
e o Vetor Tmax[i] com Tmax[i-1]+17280+5; %Tempo de Cada Dosagem+Qtd de Dosagem em Tempo;
{

Depois disso e so escrever esses vetores na EEprom, pode ser um Metodo Salvar.

Agora 10 IFs mais ou menos assim:

Se Tempo Maior que Tmin[1] e Menor que Tmax[1]
{Liga Bomba 1 RA}
Senão
{Desliga Bomba 1}

e assim em diante ate completar 10 timers.

Acho que assim fica mais fácil, ao invés do usuário ter horários fixos de dosagem, ele pode escolher quantas vezes ao dia dosar.

Mas sua atitude de construir usando o Arduino foi excepcional, e seu programa está excelente..Parabéns, não sendo necessário modificações, apenas quis demonstrar o metodo que pensei, mas qualquer um dos dois é valido.

Desculpe não escrever o programa, mais tá complicado para mim esse semana..

Se precisar de algo entre contato.

denis@ufscar.br

Abracos,

Denis

Avatar do usuário
Denis P Lima
Pomacanthus imperator
Pomacanthus imperator
Mensagens: 830
Registrado em: 13 Out 2010, 14:18
Apelido: Denis
Cidade: São Carlos
País: Brasil
Localização: São Carlos-SP
Curtiu: 220 vezes
Recebeu Curtir: 89 vezes

Re: Dosadora com Arduino em construção

#8 Mensagem por Denis P Lima »

Caro Tembler, obrigado pela atenção.

Esse programa seria individual para cada bomba assim como a calibração.

Muito Obrigado, e acompanhando o tópico icon_first .

Abraços a todos.

Denis
"LASCIATE OGNI SPERANZA VOI CHE ENTRATE"
Dante Aliguieri

"SE VIS PACEM,PARA BELLUM"

PROJETO SKIMMER "BURGER KING": http://www.brasilreef.com/viewtopic.php ... 63#p330563

mauricio nogueira
Pomacanthus imperator
Pomacanthus imperator
Mensagens: 779
Registrado em: 30 Jun 2009, 09:25
Apelido: mauricio_Nogueira
Localização: São Paulo
Recebeu Curtir: 5 vezes

Re: Dosadora com Arduino em construção

#9 Mensagem por mauricio nogueira »

a minha é um pouco diferente... da sete da manha uma mao pega uma seringa e a outra pega o potinho, insere a seringa no pote, puxa a quantidade ja determinada e joga no sump kkkkkk

vou acompanhar esse topico!

matheus
Diplectrum formosum
Diplectrum formosum
Mensagens: 12
Registrado em: 10 Mar 2011, 21:59
Apelido: Mat
Data de Nascimento: 01 Out 1993
Cidade: recife
País: brasil

Re: Dosadora com Arduino em construção

#10 Mensagem por matheus »

Antonio Miranda, opa irmão tudo bem? vi seu diy arduino pra dosadora e queria fazer ,gostaria de saber se vc tem como disponibilizar a lista de itens que precisa farzer ? obg!!

Gabriel Leite
Diplectrum formosum
Diplectrum formosum
Mensagens: 2
Registrado em: 30 Mar 2015, 00:17
Apelido: Biel
Data de Nascimento: 25 Mai 1981
Cidade: Brasilia
País: Brasil

Re: Dosadora com Arduino em construção

#11 Mensagem por Gabriel Leite »

Você poderia informar qual o material foi usado?
Estou desenvolvendo também uma dosadora e gostaria de saber que material foi usado para que eu possa comprar todo o material!

Antonio Miranda
Diplectrum formosum
Diplectrum formosum
Mensagens: 4
Registrado em: 01 Ago 2011, 21:32
Apelido: Miranda
Data de Nascimento: 13 Jun 1977
Cidade: São Paulo
País: Brasil

Re: Dosadora com Arduino em construção

#12 Mensagem por Antonio Miranda »

Desculpas pela demora
Eu acabei não concluindo o projeto..

Devido a problema familiares o meu aquário ficou em segundo plano um bom tempo...

Responder

Voltar para “Faça Você Mesmo”