Mostrando postagens com marcador Arduino. Mostrar todas as postagens
Mostrando postagens com marcador Arduino. Mostrar todas as postagens

quinta-feira, 11 de abril de 2019

Projeto Completo Ball on Plate

Ball Balancing PID System




https://www.instructables.com/id/Ball-Balancing-PID-System/
https://github.com/JohanLink/Ball-Balancing-PID-System

feito fork no github


 Outro interressante
Sistema pêndulo-hélice com PID no Arduino

quinta-feira, 10 de setembro de 2015

Montagens

09/09/2015
comprado dois módulos para acionamento de motor de passo para montagem abaixo:
http://www.homofaciens.de/technics-machines-plotter-cdrom_en_navion.htm

Este site também tem um bom video sobre eletrodinâmica

sábado, 22 de fevereiro de 2014

Redes Neurais no Arduino

http://arduinobasics.blogspot.com.br/2011/08/neural-network-part-1-connection.html

http://arduinobasics.blogspot.com.br/2011/08/poor-mans-colour-detector-part-2.html

http://robotics.hobbizine.com/arduinoann.html

sexta-feira, 3 de dezembro de 2010

Conexão Porta Serial em Java

jSSC - java-simple-serial-connector
http://code.google.com/p/java-simple-serial-connector/

alternativa ao java rxtx usado no arduino

código mais simples, exemplo

----------------------8<--------------------------
import jssc.SerialPort;
import jssc.SerialPortException;

public class Main {

public static void main(String[] args) {
SerialPort serialPort = new SerialPort("COM1");
try {
//Open serial port
serialPort.openPort();

//Set params.
serialPort.setParams(9600, 8, 1, 0);

//Read 10 bytes from serial port
byte[] buffer = serialPort.readBytes(10);
serialPort.closePort();//Close serial port
}
catch (SerialPortException ex) {
System.out.println(ex);
}
}
}
----------------------8<--------------------------

segunda-feira, 13 de setembro de 2010

domingo, 5 de setembro de 2010

Metaboard

Metaboard


clone do arduino, barato


Outra opção de compra
http://www.nuelectronics.com/estore/

domingo, 23 de agosto de 2009

LCD Funcionando o Arduino

baseado no LiquidCrystal Library com display WC1602d2 recebido de Luciano Lulio e compatível com o padrão HD44780. Diagrama abaixo



















Exemplos
http://arduino.cc/en/Tutorial/LiquidCrystalDisplay

Pinagem retirado do datasheet de outro semelhante, na SparkFun
http://www.sparkfun.com/datasheets/LCD/GDM1602K.pdf

sexta-feira, 21 de agosto de 2009

Controle de Servo Motor

Usando Arduino-0017 e Processing e servo motor de parabólica

Internface gráfica a partir do exemplo da biblioteca G4P
http://www.lagers.org.uk/g4p/distribution/web/index.html

Util
Openprocessing
http://openprocessing.org/visuals/?visualID=2362


Código Fonte
-----------------------------------------8<----------------------------

import guicomponents.*;
import processing.serial.*;

Serial myPort; // Create object from Serial class

// G4P components for main window
GPanel pnlControls;
GLabel lblSomeString, lblAlpha, lblAction, lblCursor;
GTextField txfSomeText;
GCombo cboColor, cboFont;
GHorzSlider sdrAlpha;
GActivityBar acyBar;
GTimer tmrTimer;
GButton btnTimer;
GCheckbox cbxBusy, cbxMouseOver;
GOptionGroup opgMouseOver;
GOption optHand, optXhair, optMove, optText,optWait;

// G4P components for second window
GButton btnControl; // Used to create controller window
GWindow windControl;
GHorzSlider sdrHorzPos;
GVertSlider sdrVertPos;

PImage imgBgImage;

int count = 0;

int pX = 10;
int pY = 30;
int pHeight = 280;
int pWidth = 600;

void setup(){
//size(200, 200);
// I know that the first port in the serial list on my mac
// is always my FTDI adaptor, so I open Serial.list()[0].
// On Windows machines, this generally opens COM1.
// Open whatever port is the one you're using.
//
String portName = Serial.list()[1];
// println(Serial.list());
myPort = new Serial(this, portName, 9600);

size(700,340);
// Load the background image
imgBgImage = loadImage("bground.jpg");
// Set the colour scheme
G4P.setColorScheme(this, GCScheme.GREEN_SCHEME);
G4P.messagesEnabled(false);

// Create 2D GUI
createPanelAndStatusBar();
createTransparencySlider();


// Enable mouse over image changes
G4P.setMouseOverEnabled(true);

// Create a second control window
// btnControl = new GButton(this, "Open Panel Position Window", 10, pHeight - 100,200,30);
pnlControls.add(btnControl);
}



public void createPanelAndStatusBar(){
pnlControls = new GPanel(this,"Panel Tab Text (drag to move : click to open/close)",pX,pY,pWidth,pHeight);
pnlControls.setOpaque(true);
pnlControls.setCollapsed(false);
lblAction = new GLabel(this, "USER ACTION FEEDBACK DISPLAYED HERE!", 0, pHeight-20, pWidth, 20);
lblAction.setBorder(1);
lblAction.setOpaque(true);
lblAction.setColorScheme(GCScheme.RED_SCHEME);
pnlControls.add(lblAction);
}


public void createTransparencySlider(){
lblAlpha = new GLabel(this,"Adjustar rotação (0-180º) ->",0,pHeight-40,150);
lblAlpha.setFont("Arial", 14);
sdrAlpha = new GHorzSlider(this,pWidth-400,pHeight-40,299,19);
sdrAlpha.setBorder(2);
// sdrAlpha.setLimits(255, 128, 255);
sdrAlpha.setLimits(179, 0, 179);
pnlControls.add(lblAlpha);
pnlControls.add(sdrAlpha);
}


public void handleSliderEvents(GSlider slider){
if(sdrAlpha == slider){
//pnlControls.setAlpha(sdrAlpha.getValue());
// lblAction.setText("Panel transparency is " + pnlControls.getAlpha());
lblAction.setText("Ângulo do Servo " + sdrAlpha.getValue());
//myPort.write(100);
myPort.write(sdrAlpha.getValue());
}
if(sdrHorzPos == slider){
pnlControls.setX(sdrHorzPos.getValue());
}
if(sdrVertPos == slider){
pnlControls.setY(sdrVertPos.getValue());
}
}


public void handlePanelEvents(GPanel panel){
if(pnlControls == panel){
switch (pnlControls.getEventType()){
case GPanel.DRAGGED:
if(sdrHorzPos != null && sdrVertPos != null){
sdrHorzPos.setValue(pnlControls.getX());
sdrVertPos.setValue(pnlControls.getY());
}
}
}
}


void draw(){
pushMatrix();
background(imgBgImage);
popMatrix();
}

public void drawController(GWinApplet appc, GWinData data){
appc.stroke(255,255,0);
appc.strokeWeight(1);
appc.fill(130,130,0);
appc.rect(pnlControls.getX()/4, (pnlControls.getY() - pnlControls.getTabHeight())/4,
pnlControls.getWidth()/4, (pnlControls.getHeight()+ pnlControls.getTabHeight())/4);
}


/* ----------- P R O G R A M A D O A R D U I N O -------------------------------------
Servo ligado no pino 10


#include

Servo myservo; // create servo object to control a servo

int potpin = 0; // analog pin used to connect the potentiometer
int val; // Data received from the serial port


void setup()
{
myservo.attach(10); // attaches the servo on pin 9 to the servo object
Serial.begin(9600); // Start serial communication at 9600 bps
}

void loop()
{
if (Serial.available()) { // If data is available to read,
val = Serial.read(); // read it and store it in val
}
val = map(val, 0, 179, 0, 179); // scale it to use it with the servo (value between 0 and 180)
myservo.write(val); // sets the servo position according to the scaled value
delay(15); // waits for the servo to get there
}

*/

quinta-feira, 7 de fevereiro de 2008

Simulação de um Termistor

Local: em casa
simulado no Qucs um divisor de frequência. Abaixo alguns valores obtidos, o ideal seria um resitor de 3 ohms (achado um de 10 no sucatão) assim o dispositivo entrega ao Arduino uma tenção de 0,3 até 4 volts correspondendo as temperaturas mais próximas de 0° e 100° respectivamente.

O Qucs é um software de simulação similar ao Spice porém com ambiente gráfico. Ainda não existe o componente Termistor, para esta simulação foi usado um resistor comun e simulado com 3 valores diferentes de resistência. Uma alternativa é usar um netlist que simule um termistor. Um netlist no Spice é um arquivo que descreve o funcionamento de um componente.

Valor do resistor de cima 3 ohms
Termistor Tensão saída
0,2 0,312
3 1,88
12 4

Valor do resistor de cima 5 ohms
Termistor Tensão saída
0,2 0,192
3 1,88
12 3,53


Valor do resistor de cima 10 ohms
Termistor Tensão saída
0,2 0,098
3 1,15
12 2,73

quarta-feira, 6 de fevereiro de 2008

Cálculo d aresistência do Termistor

Local: Araranguá
Calculado com base neste endereço a resistência de um termístor retirado de uma fonte danificada.

Esse termistor é um NTC, que diminui a resistência conforme a temperatura aumenta.

calcular um valor aproximado da resistência RT do termístor para qualquer particular temperatura


RT = RT0 x e^
{b [(1/T) - (1/T0)]}


onde RT é a resistência calculada na temperatura absoluta kelvin (T = t°C + 273), RT0 é a resistência de referência a T0 em kelvin. Quando a temperatura de referência é 25oC, T0 = 25oC + 273.

e é a base dos logaritmos naturais, elevado à potência [b ((1/T) - (1/T0))], nessa expressão, b é o fator-beta, específico desse termístor.


tabela Termistor Verde - valores medidos
========================================
0° 12 ohms
25° 5 ohms
100° 1,2 ohms



valores considerados
=====================
resistencia a 25° 3 ohms (valor impresso no componente: 03)
beta ou o fator-b 5000 (valor impresso no componente: 005)

Valores Calculados
=====================
RT0 = 3*e^(5000*((1/273)-(1/298))) = 13,9
RT25 = 3*e^(5000*((1/298)-(1/298))) = 3
RT100 = 3*e^(5000*((1/373)-(1/298))) = 0,1

Exemplo do link
http://www.feiradeciencias.com.br/sala15/15_05.asp#Sensores%20de%20temperatura
RT0 = 20 kW e b = 4200
=20000*e^(4200*((1/277)-(1/298)))
=58219,9 => 58,2 k

segunda-feira, 4 de fevereiro de 2008

Redes Neurais no ATMega32

Local: Araranguá
Artigo sobre um robô que usa redes neurais para controlar sensores. Usando no atmega32, ver porte para Arduino. Link

dois artigos como referência
Evolutionary Bits'n'Spikes
Evolution of Spiking Neural Circuits in Autonomous Mobile Robots

sexta-feira, 1 de fevereiro de 2008

Chegou meu Arduino


Local: Zaib em 1º de fevereiro 17:00s
Comprado na Make Store dia 28/1 Arduino modelo Bare Bones (desmontado).