1 / 2
INFIDEL sensor filament winder — zdjęcie 1
1 / 2

INFIDEL sensor filament winder

Zamów wydruk tego modelu

Obliczymy ostateczną cenę na podstawie wybranego pliku. Sprawdzisz ją i zaakceptujesz przed płatnością.

Zapisane na tym urządzeniu.

Informacje o modelu

Źródło
Printables
Kategoria
Tools
Licencja
Creative Commons — Attribution — Noncommercial — Share Alike

This is a modified version of toms INFIDEL filament diameter measurement sensor: InFiDEL - Inline Filament Diameter Estimator (lowcost) by Tom | Download free STL model | Printables.com

Meant to be used with: Bambu Lab P1 / X1 / X1C / X1CC Filament Spool Switcher & Winder if you use AMS by Miklos Kiszely | Download free STL model | Printables.com

Made to be used for homebrew filament production.

IMPORTANT

don't buy a PCB and waste $60 like I did!

Instead control the hall effect sensor using an Arduino

This is my Arduino + motor upgrade for the filament spooler: Arduino Filament Transfer Winder Motor Drive and Spool Adapter by Redpotato441 | Download free STL model | Printables.com

the goal is for the Arduino to read the filament diameter and then adjust the motor speed in order to increase or decrease the filament diameter in order to create filament with a consistent diameter. 

here is my working Arduino code:

// Motor pins
const int motorChannel = 13; // Motor channel connected to pin 13
const int motorBrake = 8; // Motor brake connected to pin 8
const int pwmPinMotor = 11; // Assign PWM pin
int motorSpeed = 255; // Assign baseline motor speed
// Fan Pins
const int fanChannel = 12; // Fan channel connected to pin 12
const int pwmPinFan = 3; // Assign PWM pin
// Hall effect sensor pins
const int hallPin = A5;    // Hall effect sensor connected to analog pin A5
int magnetState = LOW;     // current state of the magnet
// Calibrations
const int baseReading = 750; // Reading of hall effect sensor without anything inserted
const int fillamentDiameter = 600; // Reading of hall effect sensor with 1.75mm fillament inserted
const int minimumSpeed = 75; // Minimum speed that the motor will rotate at
void setup() {
 digitalWrite(motorChannel, HIGH);  // Establishes backward direction of motor
 digitalWrite(motorBrake, LOW);   // Disengage the Brake for motor
 digitalWrite(fanChannel, HIGH); // Eastablishes forward direction of fans
 pinMode(hallPin, INPUT);  // Set the Hall effect sensor pin as input
 Serial.begin(9600);       // Initialize serial communication
}
void loop() {
 analogWrite(pwmPinFan, 255); // Engage fan
 int sensorValue = analogRead(hallPin);  // read the sensor value
 //Serial.println(sensorValue);
 if(sensorValue <= baseReading){
     if(sensorValue >= fillamentDiameter + 10){
       motorSpeed = motorSpeed * .975; // Make motor spin slower
     }
     else if(sensorValue <= fillamentDiameter - 10){
       if(motorSpeed < 255){
         if(motorSpeed < minimumSpeed){
           motorSpeed = minimumSpeed;
         }else{
           motorSpeed = motorSpeed + 5; // Make motor spin faster
         }
       }
     }
   Serial.println(motorSpeed);
   analogWrite(pwmPinMotor, motorSpeed);   //Spins the motor
   delay(10000);  // small delay between readings
 }
 else{
   analogWrite(pwmPinMotor, 0);   //Turns off motor
 }
}
         

Cheers

Tagi