LusoRobótica - Robótica em Português
Robótica => Projectos de robótica => Projectos em desenvolvimento => Tópico iniciado por: rappa em 20 de Novembro de 2010, 02:40
-
boas!
por algum tempo estive fora de projectos de electrónica mas como tem andado a chover tenho tido mais tempo:)
O projecto já começou:)
aqui vai:
O projecto veio a propósito de andar com aviões rc e como toda a gente sabe, ou devia saber, as baterias lipo não podem baixar a tensão a menos de 3V, sendo assim o meu objectivo é construir algum sistema que me diga quando devo parar de brincar e aterrar o bicho.
Sei que há vários sistemas, de todos os que conheço o que me interessou mais foi o da telemetria, que consiste num pedaço de componentes electrónicos no avião e outro pedaço de componentes electrónicos no comando e que comunicam entre si e vão dizendo ao "piloto" o estado da bateria e outros componentes.
alguns sistemas:
este tipo já possuo.
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fwww.cnchelicopter.com%2Fcatalog%2F08152008Jnew0001p.jpg&hash=de706af4ec32131928ae81e44978b0e4438d0737)
(https://www.falconsrcs.co.uk/store/images/uploads/Battery%20Monitors/BM-6%20Cell%20Voltage%20Monitor%202-6S%20Lipo%20(New%20Version).JPG)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fwww.hobby-asia.com%2Fimages%2Foverview%2FLipo%2520Monitor.jpg&hash=e77064684a4d98cbebb204d98e3975e558277228)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fwww.hobbyking.com%2Fhobbyking%2Fstore%2Fcatalog%2FHXTBM3S.jpg&hash=a0052235126e39a938a634333087943cbeb4edcd)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fwww.hobbyking.com%2Fhobbyking%2Fstore%2Fcatalog%2FCL8S.jpg&hash=3b2347179ce6169723c2983f97dce1c185fb7a43)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fwww.wr-store.com%2Fimages%2FSentinelLiPoD1.jpg&hash=c01864607d4782d7516aba27085bb7a2b7642431)
estes sao o que quero fazer.
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Frcmodelreviews.com%2Fimages%2Fdiy%2Ffrskytelem5.jpg&hash=7c3c3d952d1f453963c0cbea36fa8ab80f19b423)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Ft3.gstatic.com%2Fimages%3Fq%3Dtbn%3A7wxve8b8fkM5yM%3Ahttp%3A%2F%2Fwww.heliproz.com%2Fimages%2FLipo_Fuel_Gauge-front1.jpg%26amp%3Bt%3D1&hash=b6f1e070cd59738d0d6b1841d9d1311a01e70468)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Ft3.gstatic.com%2Fimages%3Fq%3Dtbn%3AzCpLabvwpmqb2M%3Ahttp%3A%2F%2Fimg823.imageshack.us%2Fimg823%2F9002%2F68749088.jpg%26amp%3Bt%3D1&hash=60039cc89606e4ab4acc4c8a9d544fd949ce6591)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fwww.hobbyking.com%2Fhobbyking%2Fstore%2Fcatalog%2FHK-Traker.jpg&hash=c7b00348f23f1404394886937d28dc15f52f74c2)
esses últimos sistemas neste momento são um pouco dispendiosos e como um projecto de electrónica verdadeiro não se pode gastar muito dinheiro o meu segundo objectivo e não gastar $:)(ate agora só utilizei material que já tinha)
então meti mãos a obra, pequei em dois arduinos, cabos, um lcd 16*2, um modulo rf 433MHz, umas resistências, condensadores e alguma procura na net.
na procura encontrei
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fwww.myhelicopters.com%2Fimages%2FBM3.jpg&hash=6ecbdd08c0c486561af864cbdd02675757609a87)
este é um esquema de um monitor para 3celulas "normal" dos primeiros que mostrei.
deste esquema o que me interessa são os divisores de tensão porque o autor da tinha feito os cálculos e no site dele dizia eu não me lembro do site nem guardei (sou um bocado toto).
então peguei num arduino e fiz algumas ligações com resistências, o lcd, uma bateria 3S e algum código e consegui medir a tensão nas 3 células. fiz mais um bocado de condigo e coloquei uma transmissor rf.
peguei no receptor e coloquei um led. como estou a começar pelo mais simples e ainda não consigo programar como gostava saiu o seguinte:
o arduino lê o valor da tensão em cada uma das células depois vê se é 2S ou 3S e vê se alguma das células esta a baixo dos 3.3V se nenhuma das células estiver a baixo dos 3.3V ele manda um sinal pelo transmissor e faz com que o led pisque de segundo a segundo, se alguma das células estiver a baixo dos 3.3V ele manda um sinal que faz o led piscar de 5 em 5 milissegundos, entretanto vai mostrando no lcd o valor de cada uma das celulas e o valor total da tensão e a percentagem da carga que ainda resta a bateria.
no filme a seguir pode se ver o que fiz. devia ter tirado fotos, mas entretanto também ponho fotos:)
o filme não tem muita qualidade foi feito do tel.
telemetry for lipo with arduino (http://www.youtube.com/watch?v=iArFr0eWZUw#)
o código que foi feito não é la muito famoso, eu gostava que o pessoal desse uma opinião sobre esse assunto que não é tanto a minha área :(
vou postar aqui o código mas não tenho a certeza se é esta a versão do filme. pode ter mais uns ajustes mas é parecido:)
#include <LiquidCrystal.h> //incluir a libraria do lcd
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //RS-enable-D4-D5-D6-D7
//declarar variaveis
int analogOutPin = 9;
int sensorPin1 = A0;
int sensorPin2 = A1;
int sensorPin3 = A2;
int cel1=0;
int cel2=0;
int cel3=0;
float volt1 = 0;
float volt2 = 0;
float volt3 = 0;
float volttotal =0;
int pre = 0;
int temp = 0;
float cali=0.494;
void setup() {
pinMode(8, OUTPUT);
lcd.begin(16, 2); //quantas colunas tem o lcd 16colunas e 2 linhas
}
void loop() {
cel1 = analogRead(sensorPin1);//variavel sem calculo para indentificar se 2S ou 3S
cel2 = analogRead(sensorPin2);
cel3 = analogRead(sensorPin3);
while ((cel1<10) and (cel2<10) and (cel3<10)){
cel1 = analogRead(sensorPin1);
cel2 = analogRead(sensorPin2);
cel3 = analogRead(sensorPin3);
delay(100);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("conectar bateria");
lcd.setCursor(5, 1);
lcd.print("RaPPa");
}
//detinguir de 2S ou 3S
while (cel3<10 and cel2>10 and cel1>10){
digitalWrite(8, HIGH);
cel3 = analogRead(sensorPin3);
//para 2S
volttotal=0;
volt1 = (analogRead(sensorPin1)*cali)/100; //calculo da voltagem da celula 1
volt2 = ((analogRead(sensorPin2)*2*cali)/100)-volt1; //calculo da voltagem da celula 2
volttotal = volt1+volt2;
//calculo da percentagem em 2S
if (volt1 < volt2 ){
pre = ((volt2-3.3)/0.9)*100;
}
else // caso contrário, isto é voltagem2 > voltagem1
{
pre = ((volt1-3.3)/0.9)*100;
}
//mostrar valores das celulas no lcd
lcd.clear();
lcd.setCursor(0, 0); //começa a escrever na coluna 0 e na linha 0
lcd.print(volt1); //mostra no lcd a variavel voltagem1
lcd.setCursor(5, 0);
lcd.print(volt2);
lcd.setCursor(10, 0);
lcd.print("2S");
lcd.setCursor(0, 1);
lcd.print(volttotal);
lcd.setCursor(5, 1);
lcd.print(pre);
lcd.setCursor(7, 1);
lcd.print("%");
lcd.setCursor(9, 1);
lcd.print("RaPPA");
delay(100);
//sistema bateria fraca em 2S
while ((volt1 < 3.3 and cel1>10) or (volt2 < 3.3 and cel2>10)){
cel1 = analogRead(sensorPin1);
cel2 = analogRead(sensorPin2);
cel3 = analogRead(sensorPin3);
digitalWrite(8, HIGH);
delay(30);
digitalWrite(8, LOW);
volt1 = (analogRead(sensorPin1)*cali)/100; //calculo da voltagem da celula 1
volt2 = ((analogRead(sensorPin2)*2*cali)/100)-volt1; //calculo da voltagem da celula 2
volttotal = volt1+volt2;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("bateria fraca");
lcd.setCursor(0, 1);
lcd.print(volt1);
lcd.setCursor(5, 1);
lcd.print(volt2);
delay(30);
}
digitalWrite(8, LOW);
delay(500);
}
while(cel3>10 and cel2>10 and cel3>10) {
//para 3S
digitalWrite(8, HIGH);
cel1 = analogRead(sensorPin1);
cel2 = analogRead(sensorPin2);
cel3 = analogRead(sensorPin3);
volttotal=0;
volt1 = (analogRead(sensorPin1)*cali)/100; //calculo da voltagem da celula 1
volt2 = ((analogRead(sensorPin2)*2*cali)/100)-volt1; //calculo da voltagem da celula 2
volt3 = ((analogRead(sensorPin3)*cali*3)/100)-(volt1+volt2); //calculo da voltagem da celula 3
volttotal = volt1+volt2+volt3;
//calculo da precentagem em 3S
if (volt1 < volt2 or volt3 ){
pre = ((volt1-3.3)/0.9)*100;
}
else // caso contrário, isto é voltagem2 < voltagem1
{
if (volt2 < volt3){
pre = ((volt2-3.3)/0.9)*100;
}
else//caso contrario voltagem3 < voltagem 1
{
pre =((volt3-3.3)/0.9)*100;
}
}
//mostrar valores das celulas no lcd
lcd.clear();
lcd.setCursor(0, 0); //começa a escrever na coluna 0 e na linha 0
lcd.print(volt1); //mostra no lcd a variavel voltagem1
lcd.setCursor(5, 0);
lcd.print(volt2);
lcd.setCursor(10, 0);
lcd.print(volt3);
lcd.setCursor(0, 1);
lcd.print(volttotal);
lcd.setCursor(6, 1);
lcd.print(pre);
lcd.setCursor(8, 1);
lcd.print("%");
lcd.setCursor(10, 1);
lcd.print("RaPPA");
delay(100);
//sistema bateria fraca
while ((volt1 < 3.3 and cel1>10) or (volt2 < 3.3 and cel2>10)or (volt3 < 3.3) and (cel3 > 10) ){
cel1 = analogRead(sensorPin1);
cel2 = analogRead(sensorPin2);
cel3 = analogRead(sensorPin3);
digitalWrite(8, HIGH);
delay(50);
digitalWrite(8, LOW);
volt1 = (analogRead(sensorPin1)*cali)/100; //calculo da voltagem da celula 1
volt2 = ((analogRead(sensorPin2)*2*cali)/100)-volt1; //calculo da voltagem da celula 2
volt3 = ((analogRead(sensorPin3)*cali*3)/100)-(volt1+volt2); //calculo da voltagem da celula 3
volttotal = volt1+volt2+volt3;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("bateria fraca");
lcd.setCursor(0, 1);
lcd.print(volt1);
lcd.setCursor(5, 1);
lcd.print(volt2);
lcd.setCursor(10, 1);
lcd.print(volt3);
delay(50);
}
digitalWrite(8, LOW);
delay(500);
}
//volta a por as variaveis a 0
pre=0;
volttotal=0;
volt1 = 0;
volt3 = 0;
volt2 = 0;
cel1 = 0;
cel2 = 0;
cel3 = 0;
delay(100);
}
sei que não era bem isto que no inicio estava a pensar ate porque queria fazer com dois arduinos e meter o lcd no receptor mas foi isto que fui fazendo agora vou precisar da vossa ajuda para fazer uma coisa a serio mas sem gastar muito dinheiro.
obrigado e agradeço respostas:)
André
-
boas!
pessoal este fim de semana tive uma ideia que consiste em um monitor de baterias (que produz um bip), por um emissor e enviar esse bip para um receptor com fones e ouvir o bip.
decidi por a ideia em funcionamento
fotos e vídeo
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg9.imageshack.us%2Fimg9%2F7952%2Fbateriamonitor.jpg&hash=cab8b795d6eacaedd884d5818d139f748d98c92d)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg521.imageshack.us%2Fimg521%2F7952%2Fbateriamonitor.jpg&hash=1520884b9809833da1507fbe7d637333c7d7a24d)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg202.imageshack.us%2Fimg202%2F9652%2Femissor.jpg&hash=f6712cf223eb5c7ba2f70bbecfef7f2c3f6a8e52)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg51.imageshack.us%2Fimg51%2F1127%2Femissorereceptor.jpg&hash=32114a79b41aa9356f0918e673a9cfb129b576c9)
telemetria 21_11_2010.mp4 (http://www.youtube.com/watch?v=bfB84h6ux3I#)
pessoal preciso de ajuda para encontrar um modulo rf que dê para este projecto, claro que tem de ser baratinho.
comentem