Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Sensor Pi Raspberry dan Kontrol Aktuator

Biasanya sebagai programmer Anda akan bekerja dengan data pada disk, dan jika Anda beruntung Anda akan menggambar di layar. Hal ini berbeda dengan komputasi fisik yang memungkinkan Anda sebagai programmer untuk bekerja dengan data yang dirasakan dari dunia nyata dan untuk mengontrol perangkat yang bergerak di dunia nyata.

Sasaran

Gunakan Raspberry Pi untuk membaca nilai akselerometer dan untuk mengontrol motor servo.

Definisi

Pada artikel ini saya akan membahas empat proyek dasar Python untuk mendemonstrasikan kemampuan perangkat keras dari Raspberry Pi. Proyek-proyek tersebut adalah:

Mengedipkan LED.

LED adalah Light Emitting Diode. Dioda adalah elemen rangkaian yang memungkinkan arus mengalir ke satu arah tetapi tidak ke arah lain. Memancarkan cahaya berarti … memancarkan cahaya. LED khas Anda membutuhkan arus dalam kisaran 10-30 mA dan akan turun sekitar 2-3 volt. Jika Anda menghubungkan LED langsung ke GPIO Pi Anda, itu akan menghasilkan lebih dari 30 mA dan mungkin akan menggoreng LED Anda (dan mungkin Pi Anda). Untuk mencegahnya kita harus memasang resistor. Jika Anda ingin mengerjakan matematika, Anda dapat menghitung hambatan yang sesuai menggunakan persamaan berikut:

R =(Vs - Vd) / I

Tetapi jika Anda tidak ingin melakukan matematika maka pilihlah resistor antara 500-1500 ohm. Setelah Anda mengumpulkan semua elemen sirkuit Anda (LED dan resistor)

Kodenya juga cukup sederhana. Tetapi pertama-tama Anda harus menginstal RPi.GPIO. (Ini mungkin sudah diinstal sebelumnya di OS Anda.)

waktu impordari itertools impor siklusimport RPi.GPIO sebagai ioio.setmode(io.BCM)io.setup(12, io.OUT)o =cycle([1, 0])sementara True:io.output(12, o .next()) time.sleep(0.5)

Baris penting pada dasarnya adalah:

io.setup(12, io.OUT)io.output(12, 1)

Baris kode ini mengatur pin 12 sebagai output, dan kemudian mengeluarkan 1 (3,3 volt). Jalankan kode di atas yang terhubung ke sirkuit dan Anda akan melihat LED berkedip dan mati setiap setengah detik.

Membaca pot.

Pot adalah kependekan dari potensiometer, yang merupakan resistor variabel. Ini hanyalah kata yang bagus untuk tombol. Pada dasarnya dengan memutar kenop, Anda memengaruhi resistansi, yang memengaruhi tegangan melintasi pot. (V =IR , ingat?). Mengubah tegangan relatif terhadap beberapa nilai fisik adalah berapa banyak sensor yang bekerja, dan kelas sensor ini dikenal sebagai sensor analog . Ingat ketika saya mengatakan pin GPIO hanya dapat mewakili keadaan biner? Kita harus memanggil ajudan silikon lagi untuk mengubah nilai tegangan analog itu menjadi aliran biner bit yang dapat ditangani oleh Pi kita.

Potongan silikon itu disebut sebagai Analog-to-Digital Converter (ADC). Yang saya suka namanya MCP3008, memiliki 8 saluran 10-bit, artinya kita bisa membaca 8 nilai sensor dengan resolusi masing-masing 1024 (2^10). Ini akan memetakan tegangan input kita dari 0 – 3,3 volt ke bilangan bulat antara 0 dan 1023.

Saya telah mengubah Pi menjadi label kuning fana untuk menyederhanakan diagram

Untuk berbicara dengan chip, kita memerlukan paket python bernama spidev. Untuk informasi lebih lanjut tentang paket dan cara kerjanya dengan MCP3008, lihat entri blog yang bagus ini

Dengan spidev terinstal dan sirkuit yang dibangun, jalankan program berikut untuk membaca nilai sensor langsung dan mencetaknya ke stdout.

impor spidev import timespi =spidev.SpiDev()spi.open(0,0)def readadc(adcnum):jika tidak 0 <=adcnum <=7:return -1 r =spi.xfer2([1, ( 8+adcnum)<<4, 0]) adcout =((r[1] &3) <<8) + r[2] kembali adcoutwhile True:val =readadc(0) print val time.sleep(0.5) 

Bagian terpenting adalah dua baris ini:

r =spi.xfer2([1, (8+adcnum)<<4, 0])adcout =((r[1] &3) <<8) + r[2]

Mereka mengirim perintah baca dan mengekstrak bit kembali yang relevan. Lihat posting blog yang saya tautkan di atas untuk informasi lebih lanjut tentang apa yang terjadi di sini.

Aliran data.

Untuk mengalirkan data melalui kabel, kami akan menggunakan pustaka jaringan MQ dan menerapkan pola REQUEST/REPLY. MQ membuatnya sangat mudah untuk mengatur klien dan server dengan Python. Berikut ini adalah contoh kerja lengkap.

Server

import zmqcontext =zmq.Context()socket =context.socket( zmq.REP)socket.bind('tcp://*:1980') while True:message =socket.recv() cetak pesan socket.send ("Saya di sini")

Klien

import zmqcontext =zmq.Context()socket =context.socket( zmq.REQ)a ='tcp://192.168.1.6:1980'socket.connect(a)untuk permintaan dalam rentang(10):socket. send('You home?') message =socket.recv() print message

Sekarang kita dapat menggunakan traits dan enaml untuk membuat UI yang cantik di sisi klien. Lihat demo acc_plot di repo github untuk melihat contoh data streaming Pi melalui kabel yang akan diplot oleh klien.

Kontrol servo

Servo adalah motor (seringkali kecil) yang dapat Anda kendarai ke posisi tertentu. Misalnya, untuk servo tertentu, Anda mungkin dapat mengatur poros penggerak dari 0 hingga 18 derajat, atau di mana pun di antaranya. Seperti yang dapat Anda bayangkan, ini bisa berguna untuk banyak tugas, tidak terkecuali robotika.

Rotasi poros dikendalikan oleh Pulse Width Modulation (PWM) di mana Anda mengkodekan informasi durasi pulsa tegangan tinggi pada pin GPIO. Kebanyakan servos hobi mengikuti makna lebar pulsa standar. Pulsa 0,5 ms berarti pergi ke posisi min Anda dan pulsa 2,5 ms berarti pergi ke posisi maksimal Anda. Sekarang ulangi pulsa ini setiap 20 md dan Anda sedang mengontrol servo.

Lebar pulsa jauh lebih kritis daripada frekuensi

Pengaturan waktu seperti ini tidak mungkin dilakukan dengan Python. Faktanya, itu tidak mungkin dilakukan dengan sistem operasi modern. Interupsi bisa masuk kapan saja dalam kode kontrol Anda, menyebabkan pulsa lebih lama dari yang diinginkan dan jitter di servo Anda. Untuk memenuhi persyaratan waktu, kita harus memasuki dunia modul kernel yang menyenangkan. ServoBlaster adalah modul kernel yang menggunakan blok kontrol DMA untuk melewati CPU sepenuhnya. Saat dimuat, modul kernel membuka file perangkat di /dev/servoblaster tempat Anda dapat menulis perintah posisi.

Saya telah menulis lapisan berorientasi objek kecil di sekitar ini yang membuat kontrol servo lebih sederhana. Anda dapat menemukan perpustakaan saya di sini:

https://github.com/jminardi/RobotBrain

Cukup sambungkan servo ke 5v dan arde pada Pi Anda, lalu sambungkan kabel kontrol ke pin 4.

Kode python cukup sederhana:

import timeimport numpy as npfrom robot_brain.servo import Servoservo =Servo(0, min=60, max=200)untuk val di np.arange(0, 1, 0.05):servo.set(val) time.sleep( 0.1)

Yang harus Anda lakukan adalah membuat instance servo dan memanggilnya set() metode dengan nilai floating point antara 0 dan 1. Lihat demo servo_slider di github untuk melihat kontrol servo diterapkan melalui jaringan.

Untuk detail lebih lanjut:Sensor Raspberry Pi dan Kontrol Aktuator


Proses manufaktur

  1. Komunikasi MQTT Antara NodeMCU dan Raspberry Pi 3 B+
  2. Pencatat Suhu Raspberry Pi
  3. Ukur suhu dengan sensor DS18B20 1-kawat dan Raspberry Pi
  4. Sensor Suhu Python dan Raspberry Pi
  5. Stasiun Cuaca Raspberry Pi
  6. Sensor Ultrasonik (HC-SR04) + Raspberry Pi
  7. Sensor Gerak menggunakan Raspberry Pi
  8. Sensor Kelembaban Tanah Raspberry Pi
  9. Raspberry Pi digital Hall sensor in JAVA
  10. Sensor Suhu dan Cahaya Raspberry Pi