Archivo de la etiqueta: 0xDA_bit

ProcessingTutorial – Cap3. Introducción a las interfaces gráficas (I).


Muy buenas a todos.

Tras unos cuantos meses sin poder publicar ningún videotutorial debido a la carga de trabajo de los miembros de tallerarduino, aquí os dejo un nuevo capítulo de la serie Processing Tutorials.

En este tercer capítulo vamos a introducirnos en el mundo de las interfaces gráficas con processing, aprenderemos como crear botones, insertar textos, imágenes, …. todo lo necesario para que podáis crear vuestros pequeños proyectos caseros. En los próximos tutoriales, haremos que estas interface gráficas vayan linkadas con nuestros arduino. Además, en este videotutorial vamos a crear un Datalogger que nos va a permitir grabar en un archivo de texto los datos que obtengamos con processing, elemento que nos será muy útil en el momento que empecemos a trabajos con proyectos entre Arduino y processing.

Sin más, aquí os dejo el link con los archivos a descargar y el video del tutorial.

Enjoy!

Arduino como generador de funciones


Muy buenas a todos de nuevo. Mientras se acaban de cocinar los próximos tutoriales tanto de “Arduino tutorials” como de “Processing tutorials”, aquí os dejo una información que he encontrado muy interesante.

Los chicos de “interface.khm.de” han subido un post en el cual explican como podéis crear un pequeño generador de funciones con vuestro arduino, lo de pequeño viene referido a que tan solo puede generar una señal senoidal.

El código de Arduino es el siguiente:

<pre><strong>/*
 *
 * DDS Sine Generator mit ATMEGS 168
 * Timer2 generates the  31250 KHz Clock Interrupt
 *
 * KHM 2009 /  Martin Nawrath
 * Kunsthochschule fuer Medien Koeln
 * Academy of Media Arts Cologne

 */

#include "avr/pgmspace.h"

// table of 256 sine values / one sine period / stored in flash memory
PROGMEM  prog_uchar sine256[]  = {
  127,130,133,136,139,143,146,149,152,155,158,161,164,167,170,173,176,178,181,184,187,190,192,195,198,200,203,205,208,210,212,215,217,219,221,223,225,227,229,231,233,234,236,238,239,240,
  242,243,244,245,247,248,249,249,250,251,252,252,253,253,253,254,254,254,254,254,254,254,253,253,253,252,252,251,250,249,249,248,247,245,244,243,242,240,239,238,236,234,233,231,229,227,225,223,
  221,219,217,215,212,210,208,205,203,200,198,195,192,190,187,184,181,178,176,173,170,167,164,161,158,155,152,149,146,143,139,136,133,130,127,124,121,118,115,111,108,105,102,99,96,93,90,87,84,81,78,
  76,73,70,67,64,62,59,56,54,51,49,46,44,42,39,37,35,33,31,29,27,25,23,21,20,18,16,15,14,12,11,10,9,7,6,5,5,4,3,2,2,1,1,1,0,0,0,0,0,0,0,1,1,1,2,2,3,4,5,5,6,7,9,10,11,12,14,15,16,18,20,21,23,25,27,29,31,
  33,35,37,39,42,44,46,49,51,54,56,59,62,64,67,70,73,76,78,81,84,87,90,93,96,99,102,105,108,111,115,118,121,124

};
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &amp;= ~_BV(bit))
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))

int ledPin = 13;                 // LED pin 7
int testPin = 7;
int t2Pin = 6;
byte bb;

double dfreq;
// const double refclk=31372.549;  // =16MHz / 510
const double refclk=31376.6;      // measured

// variables used inside interrupt service declared as voilatile
volatile byte icnt;              // var inside interrupt
volatile byte icnt1;             // var inside interrupt
volatile byte c4ms;              // counter incremented all 4ms
volatile unsigned long phaccu;   // pahse accumulator
volatile unsigned long tword_m;  // dds tuning word m

void setup()
{
  pinMode(ledPin, OUTPUT);      // sets the digital pin as output
  Serial.begin(115200);        // connect to the serial port
  Serial.println("DDS Test");

  pinMode(6, OUTPUT);      // sets the digital pin as output
  pinMode(7, OUTPUT);      // sets the digital pin as output
  pinMode(11, OUTPUT);     // pin11= PWM  output / frequency output

  Setup_timer2();

  // disable interrupts to avoid timing distortion
  cbi (TIMSK0,TOIE0);              // disable Timer0 !!! delay() is now not available
  sbi (TIMSK2,TOIE2);              // enable Timer2 Interrupt

  dfreq=1000.0;                    // initial output frequency = 1000.o Hz
  tword_m=pow(2,32)*dfreq/refclk;  // calulate DDS new tuning word 

}
void loop()
{
  while(1) {
     if (c4ms &gt; 250) {                 // timer / wait fou a full second
      c4ms=0;
      dfreq=analogRead(0);             // read Poti on analog pin 0 to adjust output frequency from 0..1023 Hz

      cbi (TIMSK2,TOIE2);              // disble Timer2 Interrupt
      tword_m=pow(2,32)*dfreq/refclk;  // calulate DDS new tuning word
      sbi (TIMSK2,TOIE2);              // enable Timer2 Interrupt 

      Serial.print(dfreq);
      Serial.print("  ");
      Serial.println(tword_m);
    }

   sbi(PORTD,6); // Test / set PORTD,7 high to observe timing with a scope
   cbi(PORTD,6); // Test /reset PORTD,7 high to observe timing with a scope
  }
 }
//******************************************************************
// timer2 setup
// set prscaler to 1, PWM mode to phase correct PWM,  16000000/510 = 31372.55 Hz clock
void Setup_timer2() {

// Timer2 Clock Prescaler to : 1
  sbi (TCCR2B, CS20);
  cbi (TCCR2B, CS21);
  cbi (TCCR2B, CS22);

  // Timer2 PWM Mode set to Phase Correct PWM
  cbi (TCCR2A, COM2A0);  // clear Compare Match
  sbi (TCCR2A, COM2A1);

  sbi (TCCR2A, WGM20);  // Mode 1  / Phase Correct PWM
  cbi (TCCR2A, WGM21);
  cbi (TCCR2B, WGM22);
}

//******************************************************************
// Timer2 Interrupt Service at 31372,550 KHz = 32uSec
// this is the timebase REFCLOCK for the DDS generator
// FOUT = (M (REFCLK)) / (2 exp 32)
// runtime : 8 microseconds ( inclusive push and pop)
ISR(TIMER2_OVF_vect) {

  sbi(PORTD,7);          // Test / set PORTD,7 high to observe timing with a oscope

  phaccu=phaccu+tword_m; // soft DDS, phase accu with 32 bits
  icnt=phaccu &gt;&gt; 24;     // use upper 8 bits for phase accu as frequency information
                         // read value fron ROM sine table and send to PWM DAC
  OCR2A=pgm_read_byte_near(sine256 + icnt);    

  if(icnt1++ == 125) {  // increment variable c4ms all 4 milliseconds
    c4ms++;
    icnt1=0;
   }   

 cbi(PORTD,7);            // reset PORTD,7
}</strong>

Toda la información necesaria sobre el proyecto la podéis encontrar en el siguiente link.

Enjoy!

Caja refrigerada para Arduino y Ramps. RepRap Prusa Mendel


Muy buenas a todos de nuevo. Como ya sabréis, todos los que tengáis vuestra RepRap, la temperatura es un punto conflictivo, tanto para la cama de impresión como para el hardware, seguramente, si nuestro Arduino MEGA y nuestra placa de control, en nuestro caso la RAMPS 1.4, no están bien refrigeradas, los steepers se pondrán a 4000 por hora y ello provocará que no nos imprima la pieza tal y como queremos. Por ese motivo hemos diseñado una caja con doble ventilador para poder refrigerar nuestro hardware.

Los ventiladores son los que vemos en la siguiente imágen:

 

 

 

 

 

Son dos ventiladores de la marca ARX que funcionan a 12V y los conectaremos en el bornero de la Ramps, de esta forma empezarán a funcionar desde que arranquemos la fuente de alimentación. Para aquellos que queráis hacerlo más profesional podéis colocar un sensor de temperatura de la caja, descubrir la temperatura límite y hacer que los ventiladores tan solo se activen cuando lleguen a dicha temperatura, aunque desde mi punto de visto, creo que es preferible que los ventiladores mantengan una temperatura constante dentro de la caja.
Como veréis hay dos ventiladores, esto es debido a que uno de ellos lo utilizaremos para introducir aire y el otro para extraer de esta forma conseguimos sacar el calor que se produzca en el interior.
A continuación os dejo unas fotos para que veáis el aspecto final y el anclaje al soporte de la impresora.


Pues bien, como no podía ser de otra forma, aquí os dejo los archivos “.stl” para aquellos que queráis imprimir la caja para vuestra RepRap. ArchivosStlCajaArduinoRamps.
Enjoy!

Montaje Prusa Mendel Iteración 2 paso a paso


Si estáis pensando en iniciar el montaje de vuestra RepRap Prusa Mendel aprovechando la llegada del tiempo estival y con ello el tiempo libre en vuestras vidas estáis de enhorabuena. En uno de los primeros post os adjunte 2 guías de montaje paso a paso para la construcción de vuestra impresora 3D, para aquellos que todo lo visual les es más fácil de asimilar aquí os dejo una serie de videos creados por el maestro de las impresoras 3D, el señor Obijuan!

Estos videos son una serie de tutoriales cortos muy útiles tanto para el montaje de la impresora como para el manejo de los programas necesarios para la utilización de la misma.

Como siempre, sin más, os dejo con los videos y recordar que si tenéis alguna duda, no dudéis en preguntar!

 

Enjoy!

 

1er video:

2º video:

3er video:

4º video:

5º video:

6º video:

7º vieo:

8º video:

9º video:

10º video:

11º video:

12º video:

13º video:

14º video:

15º video:

16º video:

17º video:

18º video:

19º video:

20º video:

21º video:

22º video:

23º video:

24º video:

25º video:

26º video:

27º video:

28º video:

29º video:

30º video:

31º video:

32º video:

33º video:

34º video:

35º video:

36º video:

37º vieo:

38º video:

39º video:

40º video:

41º video:

42º video:

43º video:

44º video:

45º video:

46º video:

47º video:

48º video:

49º video:

50º video:

51º video:

52º video:

53º video:

54º video:

55º video:

56º video:

57º video:

58º video:

59º video:

60º video:

61º video:

62º video:

63º video:

Guía de montaje de la Prusa Iteración 2: http://www.iearobotics.com/wiki/index.php?title=Guia_de_montaje_de_la_Prusa_2

Materiales requeridos para RepRap Prusa Mendel


Muy buenas a todos de nuevo. Seguimos con los post relacionados con el montaje de nuestra impresora 3D. A continuación os dejo la lista de materiales que se necesitan para poder montarla exceptuando las piezas de plástico.

Todo el material mecánico, como son las varillas roscadas, lisas,… lo podréis encontrar en tiendas como el Leroy Merlin o parecidas.

El material eléctrico se puede comprar en páginas como reprapworld.com (página especializada en el mundo de las impresoras 3D).

Enjoy!

Manual de construcción de: RepRap Prusa Mendel y Prusa Air


Para estrenar la sección aquí os dejo dos guías de montaje de dos modelos de RepRap diferentes, por un lado la Prusa Mendel, que es la que hemos montado el equipo de taller arduino, y por otro lado la Prusa Air.

Como siempre, estamos aquí tanto para informaros como para resolver las posiblres dudas que podáis tener, así que ya sabéis, cualquier duda escribirnos un comentario al blog o también lo podéis hacer mediante las redes sociales. Más adelante, publicaremos un Post en el que intentaremos explicar cada una de las dudas que nos surgieron antes de empezar el montaje y durante el montaje.

Descarga la guía de la RepRap Prusa Mendel.

Descarga la guía de la RepRap Prusa Air.

Enjoy!