Home > Technologie > Ein Arduino-angetriebenes Mikroplatten-Spektrophotometer

Ein Arduino-angetriebenes Mikroplatten-Spektrophotometer

Advertisement

Ein Arduino-angetriebenes Mikroplatten-Spektrophotometer

Ein Arduino-angetriebenes Mikroplatten-Spektrophotometer

Spektralfotometer sind gemeinsame Teile der Ausrüstung in einem biowissenschaftlichen Labor. Sie führen eine einfache Funktion durch - um zu messen, wie viel Licht eine Flüssigkeit bei einer bestimmten Wellenlänge absorbiert. Viele Chemikalien absorbieren Licht bei einer eingestellten Wellenlänge, und so kann dies verwendet werden, um die Konzentration der Chemikalie in der Lösung zu messen. Selbst wenn die zu testende Substanz keine nützliche Extinktion aufweist, kann ihre Gegenwart an einen Assay gekoppelt werden, der ein gefärbtes Produkt erzeugt (wie bei einem Heim-Schwangerschafts-Kit). Aufgrund der Flexibilität dieser Technik können Spektralphotometer verwendet werden, um das Vorhandensein einer fast grenzenlosen Anzahl von Dingen zu messen.

Diese Instructable Details der letzten-Jahres-Labor-Projekt von zwei Bachelor-Biochemie-Studenten in meinem Labor - Peter Elphick und Ed Tye. Wir wollten ein Spektrophotometer herstellen, das die Konzentration eines Farbstoffs mit dem Namen OPD misst; Ein gemeinsamer Farbstoff in biologischen Assay-Kits. Neben der Absorption der Proben zu lesen, wollten wir ein Spektrophotometer zu machen , die mit 96-Loch gearbeitet Mikrotiterplatten . Diese sind Einweg-, Multi-Probe-Kunststoff-Geschirr und sind das Rückgrat der Assays in akademischen und Pharma-Biowissenschaften Labore. Sie halten 96 Proben von bis zu 0,35 ml, in einem Raster angeordnet. Pharma-Labore wie sie, weil sie sich für Roboter-Handling und High-Throughput-Assays eignet.

Wir rechnen damit, dass die Endmaschine etwa £ 500 ($ 750) kostet, obwohl eine Menge, die gespeichert werden könnte, wenn Sie Ihren eigenen Rahmen Maschine.

Zu guter Letzt möchten wir Adrian Crimp und allen im Universitäts-Physik-Workshop und Derek Carr im Elektronik-Workshop für ihre Hilfe und Ratschläge danken.

Schritt 1: Notizen vor dem Start ...

  • Wir entschieden uns, mit dem Arduino Mega zu bauen, weil wir eine Menge Ausgangspins benötigten, um die zwei Schrittmotoren zu steuern. Sie könnten H-Brücken verwenden, um sich um diese und dann könnten Sie eine UNO statt.
  • Wir wählten billige, leistungsstarke Schrittmotoren im (falschen) Glauben, dass wir diese direkt aus dem Arduino-Board mit Strom versorgen konnten. Im Nachhinein wäre es viel einfacher gewesen, mit stärkeren Steppern zu beginnen.
  • Entlang jener Linien konnten wir vermutlich die Leistungsregelungsschaltung durch ein wenig Vorwärtsdenken vermieden haben, um sicherzustellen, dass wir alles, das bei der gleichen Spannung läuft.
  • Wir verwendeten Makeblock, um die xy-Tabelle zu konstruieren. Dies war fantastisch nützlich, da wir keine Ahnung, wie dies zu bauen hatte und es dauerte eine Menge Basteln, um es richtig zu bekommen. Makeblock ist perfekt für diese Art von Prototyping. Nachdem es gemacht wurde, konnte es sicher auseinander genommen werden und mithilfe einfacherer Kombinationen von Makeblock-Komponenten, oder sogar aus Aluminium-Stab und Blech bearbeitet. Das wäre viel billiger.

Schritt 2: Stückliste

Xy Tisch:

Makeblock

M4 Gewinde

1,2 mm Aluminiumblech

3mm Aluminiumblech

Elektronik:

Arduino Mega 2560

2 x 28BYJ-48 Schrittmotor

2 x ULN2003 Treiberplatine

(ZB 20 AWG)

Mini-Thermo-Belegdrucker

LED: 470nm (blau) 3mm mit 50 ° Betrachtungswinkel

Spannungsregler LM7809CT (9V)

Kühlkörper für Spannungsregler

2 x 100 nF Kondensatoren

7 x 220Ω Widerstand

Widerstand 4.7kΩ

DC Stromversorgung: 12V, 2,5A mit 2,1mm Fassstecker (Mittelstecker positiv)

Schaltschrank

Wandmontage 2.1mm Steckdose

An der Wippe ein- / ausgeschaltet

Aus dem Arduino Starter Kit:

Alphanumerisches LCD (16x2 Zeichen)

Photowiderstand VT90N2 LDR

4 x tastaturschalter

10kΩ Drehwellen-Potentiometer

Fall:

Interscale M Standardfall 133x399x310mm

Schritt 3: LED / Detektor Schaltung und Code

Ein Arduino-angetriebenes Mikroplatten-Spektrophotometer

Dies ist der einfachste Teil des Projekts. Die LED leuchtet vom Arduino, um eine Messung durchzuführen. Das Licht wird durch einen einfachen Photowiderstand detektiert. Wir setzen die LED und den Photowiderstand in einfache Halter aus Markerstiftkappen. Wir füllten diese mit blu Tack, um die Komponenten in Position zu halten und legte Kunststoff Ärmel über die Leitungen zu verhindern, dass sie kurzschließen. Wir dachten, dass wir ein kleines Objektiv benötigen, um das Licht zu fokussieren, aber die Stiftkappe tat einen großen Job. Wir begannen mit einer billigen blauen LED, aber dann vertauscht es für eine 470nm LED. Dies wurde auf die von uns gewünschte Wellenlänge abgestimmt und hatte ein ziemlich schmales Emissionsspektrum (siehe Datenblatt). Wenn Sie eine andere Verbindung messen möchten, müssen Sie nur auf eine LED mit der entsprechenden Wellenlänge tauschen.

Code:

  LDRValue = analogRead (LDR);  LDRValue2 = LDRValue - 4;  Transmission = (LDRValue2 / LDRValueMax) * 100;  Absorption = (2 - (log & sub1; & sub0; (Transmission))) * 7;  Total = total + Absorbanz;  ReadIndex = readIndex + 1;  Verzögerung (200);  If (readIndex == 5) {Durchschnitt = total / 5;

Der Wert aus dem Photowiderstand wird als Wert LDRValue gespeichert.

Der Baseline-Messwert (in diesem Fall 4) wird subtrahiert. Die Grundlinienmessung ist das Lesen, wenn die LED ausgeschaltet ist und das Hintergrundlicht darstellt, das auf den Detektor trifft. Sie müssen diesen Wert für Ihre Maschine finden. Der einfachste Weg, dies zu tun ist, um die LED zu decken und eine Lesung. Wir waren überrascht, wie niedrig der Wert war.

Das Arduino berechnet dann den Transmissionswert - das Lesen als% der maximalen Licht ausgedrückt. Um dies zu tun, vergleicht er die Lesung auf die feste ganze Zahl LDRValuemax, was für uns 650. Auch hier war, müssen Sie den Wert für die Maschine zu berechnen, die Sie, indem sie eine Lesung mit nur Luft zwischen der LED und dem Detektor zu tun.

Das Arduino wandelt dann die Transmissionswert zu einem wahren Absorptionswert. Es multipliziert auch mit einem Skalenfaktor von 7. Wir haben keine Ahnung, warum wir diesen Skalierungsfaktor brauchten.

Für die Genauigkeit, nimmt die Maschine 5 Lesungen von jeder Probe, addieren sie zusammen in der "insgesamt" und dann dividiert durch 5, um den Durchschnitt zu erhalten.

Schritt 4: Erstellen der xy-Tabelle

Ein Arduino-angetriebenes Mikroplatten-Spektrophotometer

Ein Arduino-angetriebenes Mikroplatten-Spektrophotometer

Ein Arduino-angetriebenes Mikroplatten-Spektrophotometer

Ein Arduino-angetriebenes Mikroplatten-Spektrophotometer

Ein Arduino-angetriebenes Mikroplatten-Spektrophotometer

Ein Arduino-angetriebenes Mikroplatten-Spektrophotometer

Ein Arduino-angetriebenes Mikroplatten-Spektrophotometer

Dies dauerte eine lange Zeit, um richtig zu bekommen, viel von der Zeit genommen, indem sie versuchen, die Mechanik zu vereinfachen und die Gesamtgröße zu reduzieren. Mit Makeblock wirklich geholfen, mit diesem, wie wir es in Stücke als wieder zusammenbauen konnte es so viel wie wir wollten. Es hat wirklich gute Stärke und Genauigkeit zu. Wir bestellten das Roboter - Kit sowie zwei Gewindeplatten - Kits . Das Roboter-Kit war eine großartige Mischung aus verschiedenen Komponenten, aber wir haben sehr wenig davon am Ende. Das Gewindeantriebskit war sehr nützlich, da es das M4-Gewinde und die gelenkigen Kupplungen, die wir brauchten, hatte.

Wir beschlossen, dass wir die LED und den Detektor fixieren sollten, da sie in der Ausrichtung bleiben mussten. Sie können diese auf dem Grundrahmen in Bild 1 sehen. Diese Auswahl bedeutete, dass wir die Mikroplatte bewegen mussten. Die Grundstruktur des xy-Tisches ist das Grundgestell mit zwei bewegbaren Rahmen, die rechtwinklig zueinander angeordnet sind. Wir brauchten die Rahmen fast ohne Reibung bewegen, und wir fanden , dass die Makeblock V-Nut - Lager abgestimmt mit den Slider256 Schienen eine wirklich gute Kombination hierfür waren (Bild 2).

Bilder 3 und 4 zeigen den ersten Tisch mit Stepper, der durch ein Stück geschnittenes und gebohrtes 3mm Aluminiumblech befestigt ist. Auf jeder Seite des Rahmens befinden sich 2 V-Nut-Lager, die auf den Gleitschienen auf dem Grundrahmen sitzen.

Der zweite Tisch (Abbildung 5) hat ein ausgeschnittenes Stück 1,2 mm Aluminiumblech, das zur Aufnahme der Mikroplatte dient. Es hat 4 V-Schlitzlager, um es von den Schienen in der ersten Tabelle hängen zu lassen. Bild 6 zeigt die zweite Tabelle, die auf den ersten Tisch gepinnt ist und bereit ist, auf dem Grundrahmen zu sitzen.

Bild 7 zeigt den letzten xy Tisch (mit den beiden Steppern und den Fäden entfernt)

Schritt 5: Hinzufügen der Schrittmotoren

Wir wählten 28BYJ-48 Schrittmotoren, um die xy Tabelle zu fahren. Diese sind sehr billig und weit verbreitet. Sie haben ein hohes Getriebeverhältnis, das ihnen viel Drehmoment gibt, um den Tisch zu bewegen - aber macht sie sehr langsam. Wir haben eine Tasche von ihnen aus Amazon, die die ULN2003 Treiber-Boards, die Sie benötigen, um sie ausführen. Wir schneiden 3mm Aluminiumblech, um eine einfache Halterung zu machen, um die Stepper am Rahmen zu befestigen. Zunächst wurde die Welle des Steppers direkt mit dem M4-Gewinde mit einem starren Verbinder verbunden. Dies war ein Problem, denn es vergrößerte kleine Ausrichtungsfehler und verursachte die Tabelle zu treten. Die Makeblock Gewindeplatten - Kits kam mit einem Universalgelenk, das elastische Kupplung erlaubt. Wir bohrten eine Seite zum Durchmesser der Motorwelle und nutzten diese, um mit dem Gewinde zu koppeln.

Schritt 6: Die Stepper ausführen

Ein Arduino-angetriebenes Mikroplatten-Spektrophotometer

Der Schrittmotor 28YBJ-48 ist ein 4-Spulen-Schrittmotor mit einem hohen Übersetzungsverhältnis (64: 1). Es gibt einige hilfreiche Tutorials hier:

Http: //42bots.com/tutorials/28byj-48-stepper-motor ...

https://arduino-info.wikispaces.com/SmallSteppers

Und ein großer, allgemeiner Stepper Anregend hier:

http://www.instructables.com/id/Intro-to-Stepper-Motors/

Sie verbinden mit dem Arduino durch einen ULN2003 Treiber-Platine (die Schrittkabelstecker in einer Art und Weise nur, also keine Sorge über die Verkabelung falsch bekommen). Sie können diese Motoren mit der integrierten Stepper-Bibliothek in Arduino laufen. Dadurch wird jede Spule nacheinander aktiviert, wobei der Rotor durch 4 Positionen bewegt wird, um eine Drehung auszuführen. Das ist wirklich einfach, aber begrenzt die Geschwindigkeit des Steppers. Wenn die Spulen zu schnell schalten, kann der Rotor nicht mithalten und der Motor friert ein (Sie hören ein Brummen mit einigen Vibrationen). Wir nutzten die AccelStepper Bibliothek , die für anspruchsvollere Steuerung des Motors ermöglicht. Es ermöglicht Ihnen, einen 8-Schrittfolge verwenden, um den Rotor in Halbschritten zu bewegen, ist es einfacher für sie zu halten zu machen und somit höhere Geschwindigkeiten erreichen. Es ermöglicht auch die Verwendung von Beschleunigung, die auch die maximale Geschwindigkeit erhöht. Der Versuch, den Rotor, um sofort auf die endgültige Geschwindigkeit aus der Ruhe zu bringen, wird den Rotor Stall. Die Beschleunigung bis zur Enddrehzahl ermöglicht den Aufbau des Rotors, so dass schnellere Endgeschwindigkeiten erzielt werden können. Die AccelStepper-Bibliothek ist ein wenig gewöhnungsbedürftig, aber es erlaubt uns, die Motoren wesentlich schneller laufen. Sie müssen die Bibliothek aus dem angegebenen Link herunterladen und installieren.

Konfiguration

  umfassen <AccelStepper.h> // Motor Pindefinitionen motorPin1 38 // IN1 auf dem ULN2003 Treiber #define motorPin2 40 // IN2 auf dem ULN2003 Treiber #define motorPin3 42 // IN3 auf den ULN2003 Treiber # definieren #define motorPin4 44 // IN4 auf dem ULN2003 driverdefine motorPin5 39 // IN1 auf den ULN2003 Treiber # definieren motorPin6 41 // IN2 auf den ULN2003 Treiber # definieren motorPin7 43 // IN3 auf den ULN2003 Treiber # definieren motorPin8 45 // IN4 auf dem ULN2003 Treiber // definieren Parameter für Halbschritt 8 # #define Steppers definieren STEPS_PER_MOTOR_REVOLUTION 32 # STEPS_PER_OUTPUT_REVOLUTION definieren 32 * 64 // = 2048AccelStepper stepperX (Halbschritt, motorPin1, motorPin3, motorPin2, motorPin4); AccelStepper stepperY (Halbschritt, motorPin5, motorPin7, motorPin6, motorPin8); Stepper stepper_X (STEPS_PER_MOTOR_REVOLUTION, 38, 42, 40, 44); Stepper stepper_Y (STEPS_PER_MOTOR_REVOLUTION, 39, 43, 41, 45);  Int Position1 = 0, int Position2 = 0;

Die Ausgangsports des Arduino, die mit den Motortreiberplatinen verbunden sind, müssen definiert werden. Jeder Schrittmotor wird mit einer Treiberplatine verbunden, die die Ausgabe von dem Arduino und wandelt sie in der richtigen Reihenfolge von Impulsen moduliert, um den Elektromagneten des Schritt gesendet werden.

Der 8-stufige Mechanismus ist als Parameter zur Steuerung der Schrittmotoren als HALFSTEP definiert. Dies liefert die Information, um für die Drehung der Schrittmotoren unter Verwendung des 8-Stufenmechanismus zu codieren. Der Schrittwinkel in der 8-stufigen Folge (wie viel ein einzelner Schritt das Zahnrad dreht) beträgt 5,625 ˚ (64 Schritte pro Umdrehung). Das Übersetzungsverhältnis beträgt 1/64, also 64x64 (4096) Schritte pro Umdrehung der Ausgangswelle des Motors. Die Positionen der Schrittmotoren sind auch in ihrer Ausgangsposition 0 definiert. Position1 ist die Positionsvariable von stepper1; Position2 ist die Positionsvariable des Schrittmotors 2. Position X definiert die Spalte auf der Mikroplatte, die der Sensor oberhalb (1-12) hat, die durch stepperX gesteuert wird; PositionY definiert die Zeile auf der Mikroplatte, die der Sensor über (AH), die durch stepperY gesteuert wird. In der Ausgangsposition sind beide Stellgrößen gleich 0, was dem über dem Gut A1 liegenden Sensor entspricht

  // Schrittgeschwindigkeit und Beschleunigung einstellen void setup () {stepper1.setMaxSpeed ​​(3000.0); stepper1.setAcceleration (500.0); stepper2.setMaxSpeed ​​(3000.0); stepper2.setAcceleration (500.0);}

Das Setup wird in geschweiften Klammern eingeschlossen: {...}. Die Drehzahl und Beschleunigung der Motoren ist für beide Motoren definiert. Diese Variablen wurden so gewählt, dass sie sich gut innerhalb der Fähigkeiten der Schrittmotoren befinden, um ein Abwürgen zu verhindern, aber schnell genug, damit das Programm übermäßig lang ist. Die Geschwindigkeit, 3000 (Schritte pro Sekunde), entspricht 44 U / min; Die Beschleunigung 500, entspricht 7,3 rpm ^ 2

Bewegen des Tisches

  Verzögerung (2000);  // Ablesen von A1

Vor dem Bewegen der Motoren gibt es eine Verzögerung von 2000ms (2 Sekunden), damit die erste Probe (A1) analysiert werden kann

  Stepper1.runToNewPosition (stepper1.currentPosition () +52406); Position1 = Position1 +1;  Eine Verzögerung (5000);  // Stepper1 mit Verzögerungen zwischen jedem Zug

Stepper 1 wird 52406 Schritte gedreht, was bedeutet, dass die Mikroplatte die 9mm zwischen zwei benachbarten Proben bewegt wird. Sobald sich der Stepper in die benachbarte Vertiefung bewegt hat, wird die PositionX-Variable um eine Einheit erhöht, um festzustellen, dass die Säule, die der Sensor oben auf der Mikroplatte liegt, um eins erhöht wurde (zum Beispiel von der Wanne A1 zu A2). Der Stepper pausiert, damit der Brunnen analysiert werden kann.

  If (Position1 == 11) {// nach 11 Windungen des Steppers 1 (bei A12) stepper2.runToNewPosition (stepper2.currentPosition () +52406);  Position 2 = Position 2 +1;  Verzögerung (2000);  Stepper1.runToNewPosition (0);  // Motor 1 auf A1 zurücksetzen Position1 = 0;  Verzögerung (2000);}

Daher wird die Mikroplatte so bewegt, dass die benachbarte Bohrung unterhalb des Sensors liegt, pausieren und wiederholen, bis der Sensor oberhalb der Säule 12 (Position X = 11) ist. Die if () -Klausel befiehlt, dass Schrittmotor die Mikroplatte nach unten schiebt, so dass der Sensor oberhalb der nächsten Zeile liegt (von Zeile A zu Zeile B usw.), gibt es eine Pause und anschließend wird die Mikroplatte zurückgeführt, so dass der Sensor liegt Über der ersten Spalte.

  Wenn (Position2 == 8) {// nach 7 Windungen des Motors 2 (Reihe H) stepper1.runToNewPosition (0);  // Motor 1 auf H1 zurücksetzen Position1 = 0;  Verzögerung (2000);  Stepper2.runToNewPosition (0);  // Rückkehr zu A1 while (1) {}}}

Die zweite if () - Klausel befiehlt, dass beide Motoren in die ursprüngliche Position zurückkehren (mit dem Muster A1 unter dem Sensor), sobald die erste if () - Klausel 8 mal wiederholt wurde. Zu diesem Zeitpunkt wurde jede Vertiefung auf der Mikroplatte analysiert, so dass diese Klausel lediglich die Position der Mikroplatte für die nächste Verwendung zurücksetzt. Der Code, während (1) {} diese Klausel nur einmal wiederholt. Dies bedeutet, daß, sobald die Mikroplatte gescannt und in die Vertiefung A1 zurückgeführt worden ist, die Schleife stoppt und die Mikroplatte stationär bleibt.

Schritt 7: Montage der LED / des Detektors

Ein Arduino-angetriebenes Mikroplatten-Spektrophotometer

Ein Arduino-angetriebenes Mikroplatten-Spektrophotometer

Wir schneiden Halter für die LED und den Detektor aus Aluminiumstab heraus. Diese wurden weggeschnitten, um etwas wie eine Wäscheklammer zu machen, die wir zum Makeblock Rahmen verriegeln konnten. Die Bilder zeigen die Seiten- und Draufsicht des Detektors. Ein ähnlicher Halter mit der LED ist direkt am Rahmen befestigt (siehe Bild 3). Der obere Halter ist auf einem beweglichen Arm, der aus der Weise der Mikroplatte schwingen kann, wenn Sie ihn herausnehmen müssen. Ein kleiner Magnet hält den Arm fest. Die Bolzen lassen uns wackeln den Detektor, um in perfektem Einklang mit der LED.

Schritt 8: Hinzufügen einer LCD-Anzeige

Ein Arduino-angetriebenes Mikroplatten-Spektrophotometer

Das Display ist ein 16x2-Standard-LCD-Display (aus dem Arduino Starter Kit). Ein Potentiometer steuert die Bildschirmhelligkeit. Das Display zeigt die aktuelle Probenposition (A1, A2 A3 usw.) und den Extinktionswert an. Der Code setzt ein Text-Array (WellNumberY) mit den Buchstaben der Spalten ein und wird verwendet, um aus den Zahlenwerten der Positionen (wNY) zu übersetzen. Die Zeilenposition wird in WellNumberX gespeichert. Der schwierigste Teil war die Montage der LCD in das Gehäuse. Warum verkauft niemand Trim für diese? Wir verwendeten doppelseitiges Schaumband, um das LCD an der Verkleidung zu montieren und dann Klebeband (Oberbeleuchterband) zu sichern und es vor Kurzschluss am xy Tisch zu isolieren.

Schritt 9: Hinzufügen eines Thermodruckers

Die LCD-Anzeige zeigt den aktuellen Messwert an, bedeutet aber, dass Sie von der Maschine sitzen müs- sen würden, wenn Sie die Nummern nach unten schreibt. Wir haben eine einfache Thermodrucker - im Grunde die Art von Drucker, der bis zu Quittungen druckt. Wir benutzten den A2-Mikrodrucker, der an der Wand montiert und weit verbreitet ist. Das Handbuch befindet sich in der Teileliste. Der Drucker verwendet die Arduino SoftwareSerial-Bibliothek. Es lohnt sich, mit einigen der Einstellungen zu spielen, um den Druck klar zu machen. Unsere sind unten dargestellt, und es gibt ein großes Tutorial hier .

  SoftwareSerial Thermal (51, 53);  Int heatTime = 80;  Int heatInterval = 255;  Char printDensity = 15;  Char printBreakTime = 15;

Der Drucker zeichnet etwa 1,5 A, wenn er gedruckt wird (um die Tinte zu erhitzen), so dass dies bei der Auswahl eines Netzadapters für das Spektrophotometer berücksichtigt werden muss. Wir landeten mit einem 12V-Adapter, der bis zu 2,5A bewertet wurde und das war gut. Wir fanden, dass der Drucker am besten bei 9V lief (sie spezifizieren 5-9V).

Schritt 10: Einschalten der Komponenten

Ein Arduino-angetriebenes Mikroplatten-Spektrophotometer

Ursprünglich wollten wir die Stepper direkt aus dem Arduino bei 5V laufen. Obwohl Sie können nur etwa tun dies mit einem Motor, der Strom gezogen könnte leicht beschädigt den Chip. Und wir hatten zwei Motoren laufen, so dass wir eine separate Stromversorgung benötigt. Wir hatten eine 12V DC Stromversorgung, aber laufen die Motoren bei 12V war zu viel, und sie erwärmten sich deutlich. Wir haben eine einfache Power Board, die die eingehenden 12V auf die Arduino aufgeteilt und nahm eine parallele Zuführung zu einem LM7809CT Spannungsregler, der die Spannung auf 9V für die Stepper nahm. Der Betrieb bei 9V von der eigenen Stromversorgung deutlich erhöht die maximale Geschwindigkeit. Wir nahmen auch eine andere 9V Zufuhr, um den Thermodrucker anzutreiben.

Das 2.5A, das vom DC-Adapter vorhanden ist, gab uns genügend Energie für die Maschine. Eine wichtige Sache zu wissen, über Stepper ist, dass sie die meisten Macht verwenden, wenn stationär, wenn die Spulen sind erregt, um den Rotor an Ort und Stelle halten.

NB Wir brauchten einen Kühlkörper auf den Spannungsregler zu verriegeln, die sehr heiß wurde.

Die große Lektion hier war - nachdenken. Wir brauchten den Spannungsregler nur, weil wir über die Komponenten lernten. Sie könnten die Dinge zu vereinfachen, indem Sie einen 9V DC-Adapter und Stromversorgung alles aus diesem.

Schritt 11: Ich bin verloren und ich kann nicht meinen Weg nach Hause finden

Ein Arduino-angetriebenes Mikroplatten-Spektrophotometer

Die Schrittmotoren akkumulieren nicht Fehler und so ist die Positionierung sehr genau. Das Problem tritt auf, wenn es eine Stromunterbrechung gibt. Der xy-Tisch 'weiß', wo es nur relativ ist, wo es beginnt, so dass, wenn die Macht geht aus, wird es denken, 'home' ist, wo es aufgewacht. Wir haben lange darüber nachgedacht, wie wir damit umgehen können. Eine Möglichkeit bestand darin, Kontaktsensoren hinzuzufügen, damit der Tisch sich selbst auf eine feste Position kalibrieren kann. Wir könnten auch eine Flash-Karte Schriftsteller hinzugefügt haben, um eine Aufzeichnung der Position sicher zu halten, wenn es eine Macht aus. Am Ende ging es für eine Low-Tech-Lösung. Wir haben ein einfaches D-Pad aus 4 Schaltknöpfen gemacht. Jede Schleife, der Code sieht aus, ob diese gedrückt wurden und fährt dann die Tabelle in die entsprechende Richtung. Die D-Pad ist ein einfaches Stück Perf Board mit den Tasten aufgelötet (Bild zeigt die Rückseite). Die Länge der Anschlussdrähte lässt es verstaut werden in dem Fall, wenn es nicht benötigt wird. Das funktionierte wirklich gut und erlaubte uns, die erste Probe leicht mit der LED auszurichten, als wir einrichten.

NB werden Sie feststellen, in dem Code, den wir die eingebaute Arduino Stepper.h-Bibliothek verwenden, um die Stepper im manuellen Modus laufen.

Schritt 12: Verkabelung der Elektronik

Ein Arduino-angetriebenes Mikroplatten-Spektrophotometer

Ein Arduino-angetriebenes Mikroplatten-Spektrophotometer

Wir montierten die Arduino, Schrittmotor-Treiber-Boards und Power Board auf ein Stück Plexiglas, um alles sauber zu halten. Die kleine Anzahl von Bauteilen wurde auf ein Stück Perfboard montiert und dann wurde alles gelötet. Wir enthielten einen 'Run Programm' Schalter, der auf der Frontplatte neben dem LCD montiert wurde. Wenn die Maschine eingeschaltet ist, prüft die Schleife, bevor sie die Messwerte startet. Dies ermöglicht Zeit für das Einlegen der Proben.

NB wir kauften eine momentane 'on' Schalter, die sich als eine momentane 'off' Schalter, der war sehr verwirrend, bis wir es gearbeitet. Wenn Sie sich den entsprechenden Codeabschnitt ansehen:

  Sonst if (RunSwitch == 0) {// überprüfen, ob die Run-Taste gedrückt wurdeRun = 1;

Können Sie sehen, dass dies für einen Schalter eingerichtet ist, der ausgeschaltet wird, wenn er gedrückt wird. Wenn Sie einen momentanen Schalter einschalten, müssen Sie (RunSwitch == 1)

Schritt 13: Montage im Gehäuse

Ein Arduino-angetriebenes Mikroplatten-Spektrophotometer

Ein Arduino-angetriebenes Mikroplatten-Spektrophotometer

Ein Arduino-angetriebenes Mikroplatten-Spektrophotometer

Wir haben es geschafft so ziemlich alles in einem zu bekommen Interscale M Standardfall (133x399x310mm). Dieses war ein wirklich nettes Qualitätsfall und einfach, die Bestandteile innen anzubringen. Der Rahmen wurde mit M4 Schrauben an der Unterseite gesichert und vier Gummifüße hob ihn vom Tisch auf. Sobald alles 100% vorhanden war, schneiden wir ein Loch in die obere Platte und machten einen einfachen Deckel.

Schritt 14: Endgültiger Code und Schaltpläne

Ein Arduino-angetriebenes Mikroplatten-Spektrophotometer

Die endgültige Schaltung ist in der gezeigten Fritzing obigen Diagramm. Die Fritzing-Datei (.fzz) und die abschließende Arduino-Skizze-Datei sind unten.

Schritt 15: Maschine ausführen

Ein Arduino-angetriebenes Mikroplatten-Spektrophotometer

Ein Arduino-angetriebenes Mikroplatten-Spektrophotometer

Um die Maschine zu testen, wurde eine serielle Verdünnung von 2,3 Diaminophenazin gemessen. Dies ist das Produkt einer üblicherweise verwendeten Reaktion in einem Typ von Bioassay genannt ELISA . In dem Assay wird die zu messende Substanz in der Mikroplattenvertiefung, üblicherweise durch einen spezifischen Antikörper, eingefangen. Ein Enzym namens Meerrettich-Peroxidase wird an den Antikörper gekoppelt und katalysiert die Umwandlung einer farblosen Verbindung o-Phenylendiamindihydrochlorid (OPD) zu einem gelben: 2,3 Diaminophenazin. Die Reaktion ist in der obigen Abbildung dargestellt.

Die Intensität der Farbe steht in direktem Zusammenhang mit der Konzentration der zu untersuchenden Substanz, und der Assay kann durch Verwendung verschiedener Antikörper an unterschiedliche Substanzen angepasst werden.

Wir richteten eine Reihe von Konzentrationen von 2,3 Diaminophenazin auf, um die Maschine zu testen und sie auf einem kommerziellen Spektrophotometer zu überprüfen. Die Maschine, die wir benutzten, war ein relativ billiges - ungefähr £ 10,000. Die Graphen von der kommerziellen Maschine und unserem Spektrophotometer sind oben gezeigt.

Ich muss sagen, das hat besser funktioniert, als wir es uns vorgestellt haben. Die Daten sind wirklich ziemlich gut, obwohl die kommerzielle Maschine höhere Absorptionen mit Genauigkeit lesen kann - die Linearität brach bei etwa A = 1,0 für unsere Maschine. Bei einer Absorption von 1 erzeugen nur 10% des Lichts den Detektor, so daß die Empfindlichkeit des Detektors wichtig wird. Sie werden feststellen, dass die Steigung der beiden Linien unterschiedlich ist, obwohl dies durch eine Optimierung der Berechnung im Code angepasst werden könnte. Am wichtigsten war es, dass die Maschine einen vollständigen Kreislauf der 96 Proben in perfekter Ausrichtung vervollständigt und dann wieder zum Startpunkt zurückkehrte.

Schritt 16: Lehren und künftige Verbesserungen

  1. Ein Volltrieb dauerte ca. 75 min. Dies ist viel langsamer als eine kommerzielle Maschine, die eine Platte in etwa 30 Sekunden lesen konnte. Bessere Schrittmotoren wäre die einfache Antwort darauf.
  2. Wir übertaten das Getriebe. Wir machten uns Sorgen um die Präzision des xy - Tisches, aber die Kombination des hohen Getriebes der Stepper und der Steigung des Schraubengewindes bedeutete, dass wir uns in 170nm Schritten bewegen konnten - das ist die Spitze für das, was hier benötigt wird Verlangsamt den Prozess.
  3. Unsere Maschine kämpfte ein bisschen mit Extinktionen größer als 1. Darüber hinaus ist die Menge des gemessenen Lichts winzig, und es ist wahrscheinlich, dass die Verwendung eines Phototransistors (empfindlicher) statt eines Photowiderstands als Detektor würde dazu beitragen.
  4. Die meisten kommerziellen Maschinen können mehrere Wellenlängen zu lesen, während unsere ist fixiert. Es wäre relativ einfach, mehrere LEDs auf einem Servo zu haben, die umgeschaltet werden könnten, um eine Auswahl an Wellenlängen zu ergeben. Kommerzielle Maschinen verwenden ein Beugungsgitter mit der Wellenlänge von einer weißen Lichtquelle zu variieren.
  5. Der Drucker funktionierte gut, um die Daten aufzuzeichnen, aber fühlte sich ein wenig altmodisch. Vertauschen der Mega für ein Arduino Yun würde die Datenübertragung über einen Dienst wie ermöglichen Temboo .
Related Reading