Sei sulla pagina 1di 16

A comear com a programao de placa-me

Objetivo

Makeboard placas-me usadas no s para controlar impressoras 3D, mas para fazer muitas coisas, tais como braos robticos e robs, se h uma
certa programao base. Este papel brevemente introduz o uso de cada mdulo de funo da motherboard e precisa do leitor ter uma certa base
programao de Arduino.

funo de introduo
Tubo de efeito de campo

A placa-me controla o estado de conduo do tubo de efeito de campo atravs os pinos correspondentes para controlar o cabeote de impresso, a
cama quente e o ventilador. Pino de controle poder superior na conduo em tempo de paz, geralmente de baixa potncia desconectado. Por
exemplo, para ligar a ventoinha de arrefecimento, voc pode usar o seguinte cdigo:

1#define FAN_PIN 9
2void setup() {
3 // put your setup code here, to run once:
4 pinMode(FAN_PIN, OUTPUT);
5 digitalWrite(FAN_PIN, HIGH);
6}
7void loop() {
8 // put your main code here, to run repeatedly:
9}
10
11

Quando esse cdigo carregado, se a interface de f seguida pelos fs, o ventilador comea a girar e o led do acessrio vermelho lit Se mudares
de alto para baixo em seu cdigo, o ventilador para de viragem e o LED vai embora

Motor de passo

Controle de motor de passo requer trs pinos, respectivamente dir (direo), ativar (enable), passo (pulso). O pino dir, como seu nome indica, bem
compreendido para controlar a direo de rotao do motor, variando o nvel mximo/mnimo do pino. Habilite pino indica se o motor estiver
bloqueado, se o motor para ser capaz de controlar que a rotao, a premissa bloqueado estado, bloqueado se o externa de energia, tais como mo
de torcer as palavras no pode ser girado. Actualmente, o chip controlador geral para bloqueio de nvel baixo, alto nvel desbloquear, algum motor de
acionamento externo, pode permitir a identificao de pin como off-line , por favor, sente-se. Passo pinos completa uma mudana de alto para baixo
nvel de pulso, ou seja, primeira sada de alto nvel, demora um pouco e ento um baixo nvel de sada para um ciclo de pulsao. Sada de pulso, o
motor ir girar um passo, tais como impressora 3D X nmero de Stepper motor 80, o ciclo de sada 80 pulsos, motor X ir mover o 1mm, o cdigo
o seguinte.
1
#define X_STEP_PIN A0
2
#define X_DIR_PIN A1
3
#define X_ENABLE_PIN 38
4
void setup() {
5
// put your setup code here, to run once:
6
pinMode(X_STEP_PIN, OUTPUT);
7
pinMode(X_DIR_PIN, OUTPUT);
8
pinMode(X_ENABLE_PIN, OUTPUT);
9
digitalWrite(X_ENABLE_PIN, LOW);
10
digitalWrite(X_DIR_PIN, LOW);
11
}
12
void loop() {
13
// put your main code here, to run repeatedly:
14
for (int i = 0; i < 80; i++)
15
{
16
digitalWrite(X_STEP_PIN, HIGH);
17
delayMicroseconds(2);
18
digitalWrite(X_STEP_PIN, LOW);
19
delayMicroseconds(100);
20
}
21
}
22
23
24

Interruptor de limite

Estado de interruptor de limite de deteo relativamente simples, o padro para o conjunto de pino de interruptor de limite para puxar o estado de
entrada, ento quando mudar o limite aberto, o estado padro do pino um nvel elevado. Ao mesmo tempo dar o interruptor de limite outro pino para
ligar GND, ento quando o limite de abrir e fechar a estrada, igual ao pino diretamente conectar GND, em um nvel baixo. Voc pode ler o nvel de
pino de interruptor de limite usando a funo digitalread , 0 baixo, e 1 um nvel elevado. O cdigo de exemplo abaixo, o programa a seguir ser o
x-max limite interruptor estado de sada para o monitor serial, pode acionar o interruptor de limite para observar as informaes de sada neste
processo.

1#define X_MAX_PIN 2
2void setup() {
3 // put your setup code here, to run once:
4 Serial.begin(9600);
5 pinMode(X_MAX_PIN, INPUT_PULLUP);
6}
7void loop() {
8 // put your main code here, to run repeatedly:
9 int sensorVal = digitalRead(X_MAX_PIN);
10 Serial.println(sensorVal);
11 delay(1);
12
}
13
14

Sensor de temperatura

Para obter os dados do sensor de temperatura, diretamente atravs da funo analogread para pino de sensoriamento para a converso de
analgico para digital, obter dados podem ser de tenso. A placa-me usa o resistor de 4.7 k se puxar, a tenso do termistor 100 k no final dos pinos
de acesso pode ser detectada por uma converso analgico-digital. Termistor na resistncia a diferentes temperaturas, para que a tenso de duas
fases tambm ir corresponder para alterar, que pode-se deduzir a temperatura atual. O exemplo de cdigo o seguinte, o programa a seguir ir
imprimir a cabea da sada de tenso para o monitor serial, pode encontrar sua temperatura diferente, o nmero de sada correspondente para
alterar.

1#define TEMP_0_PIN A13


2void setup() {
3 // put your setup code here, to run once:
4 Serial.begin(9600);
5}
6void loop() {
7 // put your main code here, to run repeatedly:
8 int sensorValue = analogRead(TEMP_0_PIN);
9 Serial.println(sensorValue);
10 delay(1);
11
}
12
13

Carto SD

Se a tela de LCD est ligada, voc pode operar o carto SD atravs da interface SPI, e o exemplo a seguir produzir informaes e lista de arquivos
para o monitor serial do carto SD.

1// include the SD library:


2#include <SPI.h>
3#include <SD.h>
4// set up variables using the SD utility library functions:
5Sd2Card card;
6SdVolume volume;
7SdFile root;
8const int chipSelect = 53;
9void setup() {
10 // Open serial communications and wait for port to open:
11 Serial.begin(9600);
12 while (!Serial) {
13 ; // wait for serial port to connect. Needed for native USB port only
14 }
15 Serial.print("\nInitializing SD card...");
16 // we'll use the initialization code from the utility libraries
17 // since we're just testing if the card is working!
18 if (!card.init(SPI_HALF_SPEED, chipSelect)) {
19 Serial.println("initialization failed. Things to check:");
20 Serial.println("* is a card inserted?");
21 Serial.println("* is your wiring correct?");
22 Serial.println("* did you change the chipSelect pin to match your shield or module?");
23 return;
24 }
25 else {
26 Serial.println("Wiring is correct and a card is present.");
27 }
28 // print the type of card
29 Serial.print("\nCard type: ");
30 switch (card.type()) {
31 case SD_CARD_TYPE_SD1:
32 Serial.println("SD1");
33 break;
34 case SD_CARD_TYPE_SD2:
35 Serial.println("SD2");
36 break;
37 case SD_CARD_TYPE_SDHC:
38 Serial.println("SDHC");
39 break;
40 default:
41 Serial.println("Unknown");
42 }
43 // Now we will try to open the 'volume'/'partition' - it should be FAT16 or FAT32
44 if (!volume.init(card)) {
45 Serial.println("Could not find FAT16/FAT32 partition.\nMake sure you've formatted the card");
46 return;
47 }
48 // print the type and size of the first FAT-type volume
49 uint32_t volumesize;
50 Serial.print("\nVolume type is FAT");
51 Serial.println(volume.fatType(), DEC);
52 Serial.println();
53 volumesize = volume.blocksPerCluster(); // clusters are collections of blocks
54 volumesize *= volume.clusterCount(); // we'll have a lot of clusters
55 volumesize *= 512; // SD card blocks are always 512 bytes
56 Serial.print("Volume size (bytes): ");
57 Serial.println(volumesize);
58 Serial.print("Volume size (Kbytes): ");
59 volumesize /= 1024;
60 Serial.println(volumesize);
61 Serial.print("Volume size (Mbytes): ");
62 volumesize /= 1024;
63 Serial.println(volumesize);
64 Serial.println("\nFiles found on the card (name, date and size in bytes): ");
65 root.openRoot(volume);
66 // list all files in the card with date and size
67 root.ls(LS_R | LS_DATE | LS_SIZE);
68
}
69
void loop(void) {
70
}
71
72
73
74
75
76
77
78
79
80
81
82
83

Procedimento de autoteste

Partir do conhecimento descrito acima, voc pode implementar um programa de autoteste simples para ver se a funo da placa-me ou a fiao
problemtica. Este cdigo de programa tambm fornece o download em Makeboard rede disco , nome do arquivo:makeboard.zip. Fazer o upload
para a placa de controle, todos os motores iro girar de volta e adiante cada segundo, tudo o que o efeito de campo do correspondente LED vermelho
piscar, lembre-se de plugar o poder primeiro. Isto significa que o chip do excitador do motor e o tubo de efeito de campo tudo normal, desde que
podem ser programados atravs da porta serial, ou seja, a placa de controle toda a funo do chip normal, o cdigo o seguinte:

1#define X_STEP_PIN A0
2#define X_DIR_PIN A1
3#define X_ENABLE_PIN 38
4#define Y_STEP_PIN A6
5#define Y_DIR_PIN A7
6#define Y_ENABLE_PIN A2
7#define Z_STEP_PIN 46
8#define Z_DIR_PIN 48
9#define Z_ENABLE_PIN A8
10
#define E0_STEP_PIN 26
11
#define E0_DIR_PIN 28
12
#define E0_ENABLE_PIN 24
13
#define E1_STEP_PIN 36
14
#define E1_DIR_PIN 34
15
#define E1_ENABLE_PIN 30
16
#define HEATER_0_PIN 10
17
#define HEATER_1_PIN 7
18
#define HEATER_BED_PIN 8
19
#define FAN_PIN 9
20
boolean dir = HIGH;
21
void setup() {
22 pinMode(X_STEP_PIN, OUTPUT);
23 pinMode(X_DIR_PIN, OUTPUT);
24 pinMode(X_ENABLE_PIN, OUTPUT);
25 pinMode(Y_STEP_PIN, OUTPUT);
26 pinMode(Y_DIR_PIN, OUTPUT);
27 pinMode(Y_ENABLE_PIN, OUTPUT);
28 pinMode(Z_STEP_PIN, OUTPUT);
29 pinMode(Z_DIR_PIN, OUTPUT);
30 pinMode(Z_ENABLE_PIN, OUTPUT);
31 pinMode(E0_STEP_PIN, OUTPUT);
32 pinMode(E0_DIR_PIN, OUTPUT);
33 pinMode(E0_ENABLE_PIN, OUTPUT);
34 pinMode(E1_STEP_PIN, OUTPUT);
35 pinMode(E1_DIR_PIN, OUTPUT);
36 pinMode(E1_ENABLE_PIN, OUTPUT);
37 digitalWrite(X_ENABLE_PIN, LOW);
38 digitalWrite(Y_ENABLE_PIN, LOW);
39 digitalWrite(Z_ENABLE_PIN, LOW);
40 digitalWrite(E0_ENABLE_PIN, LOW);
41 digitalWrite(E1_ENABLE_PIN, LOW);
42 pinMode(HEATER_0_PIN, OUTPUT);
43 pinMode(HEATER_1_PIN, OUTPUT);
44 pinMode(HEATER_BED_PIN, OUTPUT);
45 pinMode(FAN_PIN, OUTPUT);
46
}
47
void loop() {
48 digitalWrite(HEATER_0_PIN, dir);
49 digitalWrite(HEATER_1_PIN, dir);
50 digitalWrite(HEATER_BED_PIN, dir);
51 digitalWrite(FAN_PIN, dir);
52 digitalWrite(X_DIR_PIN, dir);
53 digitalWrite(Y_DIR_PIN, dir);
54 digitalWrite(Z_DIR_PIN, dir);
55 digitalWrite(E0_DIR_PIN, dir);
56 digitalWrite(E1_DIR_PIN, dir);
57 for (int i = 0; i < 10000; i++)
58 {
59 digitalWrite(E0_STEP_PIN, HIGH);
60 digitalWrite(E1_STEP_PIN, HIGH);
61 digitalWrite(X_STEP_PIN, HIGH);
62 digitalWrite(Y_STEP_PIN, HIGH);
63 digitalWrite(Z_STEP_PIN, HIGH);
64 delayMicroseconds(2);
65 digitalWrite(E0_STEP_PIN, LOW);
66 digitalWrite(E1_STEP_PIN, LOW);
67 digitalWrite(X_STEP_PIN, LOW);
68 digitalWrite(Y_STEP_PIN, LOW);
69 digitalWrite(Z_STEP_PIN, LOW);
70 delayMicroseconds(100);
71 }
72 dir = !dir;
73
}
74
75
76
77
78
79
80
81
82

Definio do PIN

Pino definio de controle placa clique para ver os detalhes do beb da motherboard correspondente:makeboard Pro,makeboard Miniou ver a parte
de trs da placa-me, cada pino tem um logotipo.
Se usando o desenvolvimento AVR original, por favor clique para entrar Pin mapeamento Atmega2560 para ver o Arduino para converso de pino
AVR.
PinMap2560

Com Motor de passo

Controle de motor de passo requer trs pinos, respectivamente dir (direo), ativar (enable), passo (pulso). O pino dir, como seu nome indica, bem
compreendido para controlar a direo de rotao do motor, variando o nvel mximo/mnimo do pino. Habilite pino indica se o motor estiver
bloqueado, se o motor para ser capaz de controlar que a rotao, a premissa bloqueado estado, bloqueado se o externa de energia, tais como mo
de torcer as palavras no pode ser girado. Actualmente, o chip controlador geral para bloqueio de nvel baixo, alto nvel desbloquear, algum motor de
acionamento externo, pode permitir a identificao de pin como off-line , por favor, sente-se. Passo pinos completa uma mudana de alto para baixo
nvel de pulso, ou seja, primeira sada de alto nvel, demora um pouco e ento um baixo nvel de sada para um ciclo de pulsao. Sada de pulso, o
motor ir girar um passo, tais como impressora 3D X nmero de Stepper motor 80, o ciclo de sada 80 pulsos, motor X ir mover o 1mm, o cdigo
o seguinte.

Potrebbero piacerti anche