es gl es ca gl gl gl gl es gl en gl es en pt ceb es gl gl en gl gl gl gl gl gl es en es gl gl gl es pt gl gl gl es gl gl es id gl gl gl es gl gl gl gl gl en gl gl gl gl gl gl gl gl gl gl it gl gl pt gl gl gl gl gl gl ja gl gl gl gl gl en gl en en gl es es gl gl gl pt es gl gl gl pt pt en gl ar es gl en en en gl gl gl ca gl ca gl gl gl gl gl gl gl gl it gl gl gl gl gl gl gl gl gl gl en it es es gl es gl es es gl pt en gl gl ca fr fr gl gl gl pt es sv es gl sv pt en gl hu en gl gl en gl it it es uk pt gl gl gl gl gl en gl gl es gl gl vi gl gl gl gl es es gl gl gl gl gl it gl es en en en gl en en en en gl en en en en gl
Temos unha fichas brancas e negras, e queremos separalas e depositalas en caixas diferentes.
Hai na rede moitas ideas de deseños que se poden facer de cartón, madeira ou plástico, de feito xa tiñamos un de cartón montado, pero resulta moi pouco preciso. Como este curso nos quedou pouco tempo para os proxectos, decidimos utilizar un kit comercial que programaremos e ampliaremos con máis elementos.
Substituímos o sensor de cor dixital que tiña por un sensor TCRT5000 que permite unha lectura analóxica. Isto permítenos distinguir entre ficha branca, ficha negra, ou ausencia de fichas, o cal nos vai resultar útil para parar o sistema unha vez se terminen as fichas do tubo.
Utiliza o arduino sen a shield e unha protoboard e fai as conexións necesarias. Deixa espazo para engadir posteriormente outros elementos.
Módulo TCRT5000 no pin analóxico A0
Pulsador no pin 2 + resistencia de 10k
Sistema con calibración e LEDs:
LEDs indicadores: ledMarcha verde no pin 9, ledParada vermello no pin 8, ledCalibrado ámbar ou azul no pin 7.
Antes de comezar fai unha lectura dos valores que dá o sensor cando hai unha peza branca, unha peza negra e cando non hai peza ningunha. Segundo eses valores deberás establecer uns rangos que determinarán o comportamento do sistema neses casos.
Debes incluír dous servos, un servo “ServoBrazo” para a peza que transfire as fichas desde o tubo ata o brazo, e o servo “ServoCor” que se encarga de depositalas nas caixas situadas á esquerda e á dereita.
Para a montaxe que temos no taller definimos os seguintes ángulos.
// Ángulos ServoBrazo (Servo que expulsa a peza) int ang_atras = 60; int ang_expulsar = 10; // Ángulos ServoCor (Servo que separa brancas de negras) int ang_negra = 0; int ang_medio = 65; int ang_branca = 130;
Define un tempo de espera entre procesos e outro tempo para o xiro dos servos, que controle a súa velocidade.
Define unha variable nivelCor que se vai encargar de almacenar a lectura analóxica do sensor conectado no pin A0.
Indica os pins nos que están conectados os servos: ServoCor no pin 11 e ServoBrazo no pin 12.
Establece a comunicación serie para visualizar o proceso na consola.
O programa máis simple é o que arranca nada máis acender a placa e non para ata que a desconectemos. Imos utilizalo como base e despois iremos engadindo algunhas melloras.
[Fai clic na imaxe para ampliar]
Fíxate no seguinte diagrama de fluxo. Primeiro miramos a cor da peza, despois o primeiro servo transfire a ficha ata o brazo e, en función da lectura do sensor, deposita a peza á esquerda ou á dereita. Engade ao diagrama de fluxo o necesario para que cando non haxa ningunha peza o sistema pare e prográmao.
Para o movemento dos servos utiliza un programa que faga que se desprace pouco a pouco ata a posición final e despois volva pouco a pouco ata a inicial. Axustando a variable tempo de xiro que creaches no inicio controlaremos a velocidade dos servos, e axustarémola ata que logremos que as pezas non saian disparadas.
Podes definir aparte as funcións transferir(), depositarBranca() e depositarNegra() para programar os movementos, e chamalas desde o programa principal.
Utiliza a consola para ir vendo o proceso (cor das fichas, movementos dos brazos, etc.) de maneira que te axude a corrixir os posibles fallos.
Pulsador: Imos engadir un pulsador no pin 2. Cando acendemos a placa o programa arrancará no momento en que premamos no pulsador, e non antes.
Contador na consola: engade o necesario para visualizar na consola cantas fichas brancas e negras contou e o total.
Contador nunha pantalla LCD: Engade unha pantalla LCD na que se mostre cantas pezas brancas e negras clasificou.
Pulsador con memoria: Fai que a máquina arranque ao premer no botón e que pare cando prememos de novo premendo durante un tempo.
Se queremos parar a máquina manualmente cando prememos de novo o pulsador debemos definir unha variable “estado” que garde na memoria se está en ON ou en OFF, e que cambie cada vez que prememos. Está explicado na sección de detección de pulsos “memoria“. A variable na que almacenas a información pode ser booleana e dar coma resultado dous estados: true e false.
bool estado_OnOff = false;
Calibración: Engade un segundo pulsador. No inicio, antes de arrancar a máquina cos parámetros preestablecidos, se prememos neste pulsador procede á calibración dos niveis de luz do sensor para detectar pezas brancas, negras e ausencia de pezas. En función dos valores que lea calcula os valores de rango para que a máquina actúe e actualiza os parámetros. Ao premer no pulsador principal a máquina funcionará cos novos valores. As instrucións deberán lerse na pantalla LCD.
void Calibracion(){ // (Instrucións a través da consola serie) Serial.println("Imos proceder a calibrar"); Serial.println("Elimina todas as fichas e preme no botón de calibrado"); while (digitalRead(calibradoPin)==0 ); // Agarda mentres non está premido delay(20); while (digitalRead(calibradoPin)==1 ); // Agarda mentres está premido delay(50); lecturaNada = analogRead(A0); // Fai a lectura e garda o valor Serial.println("lectura sen fichas= " + String(lecturaNada)); // Continúa ti ... }
LEDs indicadores: Engade uns LEDs que indiquen o estado do sistema: ledMarcha verde no pin 9, ledParada vermello no pin 8, ledCalibrado azul no pin 7.
Límite: Poderiamos establecer un límite de fichas que a máquina debe clasificar. A máquina deterase automaticamente ao alcanzar ese límite. 30 fichas é o máximo que entra na máquina. Podes probar que o sistema pida ao usuario introducir este dato desde a consola, e que actúe segundo ese parámetro. Outra opción podería ser usar un mando IR para introducir o número de fichas que desexas.
Interrupcións: No programa de pulsador con memoria observarás que debes manter un tempo o botón premido para que detecte o pulso e pare. Iso é porque podes premer cando está realizando un proceso (clasificar a ficha, por exemplo), e non lerá o sinal do pulsador ata que o termine. Unha maneira de corrixir isto é mediante interrupcións. Atréveste?
A protoboard é unha placa de prototipado para compobar o funcionamento do sistema mentres estás en proceso de deseño, probas e melloras, pero non é conveniente deixalo así se o proxecto está rematado. Deseña e imprime un soporte que integre a pantalla LCD (ver esquema), dous pulsadores (toma medidas do diámetro) e os tres leds indicadores (5mm). Fai as conexións internas necesarias e etiqueta os cables que se conectarán ao arduino de xeito que se vexa en que pins hai que conectalos.
Tamén podes deseñar e imprimir unhas caixas para recoller as pezas. Colle as dimensións da máquina e fai que encaixe e que as recolla ben, sen que saian disparadas.
Modelo básico utilizando antes da ampliación. Utiliza o sensor dixital inicial e unha shield.
Resultado final con sensor analóxico, dous pulsadores, LCD e leds. Permite calibración inicial antes de clasificar, mostra as fichas contadas na pantalla e detense automaticamente cando o tubo está baleiro.
Descrición de Arduíno UNO
O IDE de Arduíno
Entradas e saídas dixitais
Condicional if … else
Sinais PWM e lectura serial
Array de LEDs e funcións
A posición dun servo
Servos de xiro continuo
Motor de corrente continua
Motores paso a paso
Sensor de Luz LDR
Sensor de temperatura LM35 e TMP36
Sensor de temperatura e humidade DHT11
Sensor de temperatura DS18B20
Sensor de movemento PIR
Sensor de cor TCS3200
Sensor de cor TCS34725 RGB
Sensor de auga no solo
Medindo o tempo 1
Medindo o tempo 2: RTC
Bluetooth mestre + escravo
O tanque de auga
Reloxo de area dixital
A máquina máis inútil
Clasificador M&M’s por cor
Alarma para a cortadora láser
© 2022 Arduino • Creado con GeneratePress
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept All”, you consent to the use of ALL the cookies. However, you may visit "Cookie Settings" to provide a controlled consent.
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.