Navigation

    Duet3D Logo

    Duet3D

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • Documentation
    • Order
    1. Home
    2. felek
    • Profile
    • Following
    • Followers
    • Topics
    • Posts
    • Best
    • Groups

    felek

    @felek

    3
    Reputation
    22
    Posts
    3
    Profile views
    0
    Followers
    0
    Following
    Joined Last Online

    felek Follow

    Best posts made by felek

    • doesn't work if power cycled with touch panel pressed

      Hi!

      I have a issue with PanelDue. I'm using 3.2 firmware version but I suspect that older firmwares also have the same issue.

      Sometimes after reset touchscreen doesn't work at all. I tried to reset LCD plenty of time but it still happen(reset button, not power). I assumed that PanelDue is broken but I tried to reproduce it on second LCD and this issue still exist.
      Only solution to make it work is power reset.

      Then I released that the printed case is touching a touchscreen all the time. So if something is touching the screen and you reset the screen - touchscreen won't respond.

      I prepared instructions and movie how to reproduce it
      (https://youtu.be/uh4lXjrA4ks)

      • put you finger or two on the touchscreen (all the time)
      • in this same time click reset button
      • after reset touchscreen won't respond at all

      I've started diggind what is going on. It looks that ATSAM microcontroller works fine, but something is wrong with SSD1963. I tried to find schematic, but I found only old version when main microcontroller and display were seperate.

      posted in PanelDue
      felek
      felek
    • RE: Printer randomly stops and disconnect.

      @reahax Did you try replace sd card? I compiled (I hope correct version) firmware and checked map file. According to stack in you M122 the issue is reading blocks.

      10f3e82c-daee-4417-b872-bc138639cb58-image.png

      posted in General Discussion
      felek
      felek
    • RE: Endstop x,y

      Hi!

      You have very old firmware (1.x). This is the reason why your script doesn't work. It is dedicated to newest firrmware (3.x) so you need to upgrade. I prefer use Bossa and USB cable
      https://duet3d.dozuki.com/Wiki/Installing_and_Updating_Firmware

      posted in Duet Hardware and wiring
      felek
      felek

    Latest posts made by felek

    • doesn't work if power cycled with touch panel pressed

      Hi!

      I have a issue with PanelDue. I'm using 3.2 firmware version but I suspect that older firmwares also have the same issue.

      Sometimes after reset touchscreen doesn't work at all. I tried to reset LCD plenty of time but it still happen(reset button, not power). I assumed that PanelDue is broken but I tried to reproduce it on second LCD and this issue still exist.
      Only solution to make it work is power reset.

      Then I released that the printed case is touching a touchscreen all the time. So if something is touching the screen and you reset the screen - touchscreen won't respond.

      I prepared instructions and movie how to reproduce it
      (https://youtu.be/uh4lXjrA4ks)

      • put you finger or two on the touchscreen (all the time)
      • in this same time click reset button
      • after reset touchscreen won't respond at all

      I've started diggind what is going on. It looks that ATSAM microcontroller works fine, but something is wrong with SSD1963. I tried to find schematic, but I found only old version when main microcontroller and display were seperate.

      posted in PanelDue
      felek
      felek
    • RE: Simple switch Run-Out Sensor too sensitive. Add timeout?

      @T3P3Tony I'll try to explain my story.

      I bought Dyze design sensor (https://dyzedesign.com/shop/filament-detector/sentinel/)
      which looks pretty solid and it is simple on/off presence sensor.

      I tested many materials from different suppliers, as you can image sometimes quality of filament is quite low (I mean filament diameter).

      I had big trouble with this sensor, because it is optical sensor and sometimes when diameter is a bit smaller than reference sensor change the state. I checked it on oscilloscope.

      In this case SimpleFilamentMonitor doesn't work well. So I decided to rewrite this code in order to set flag when filament is depressed. It is a simple filter which remove noises from sensor. I also added parameter to help adjust filter length (extrusion length).

      I hope this image help to understand what I mean. It really helps when someone uses cheap filament sensor or low quality filament.
      673f8f7c-c4cc-4a43-b359-401907d75b3f-image.png

      posted in Firmware wishlist
      felek
      felek
    • RE: Simple switch Run-Out Sensor too sensitive. Add timeout?

      @Phaedrux I get it, but I think a bit different.

      Let's look an example:

      • printing some part
      • switch is depressed
      • printer is doing long travel > 2s (no extrusion)
      • in this time we check switch (interval 500ms/1s) and is depressed
        so, we pause the printer

      In scenario when we check extrusion length there is no problem, because while traveling we don't have extrusion.
      That is my idea 🙂

      posted in Firmware wishlist
      felek
      felek
    • RE: Simple switch Run-Out Sensor too sensitive. Add timeout?

      I think that checking filament sensor after some time is not good idea. What if printer is doing long travel without extrusion?
      Recently I've started implemening extra version of simple filament monitor. Instead of using time I use extrude length.
      I assume it is better because I follow the extrusion.

      Let's look at my code. I added extra parameter L. After L mm if filament is sill out the printer will pause

      /*
       * SimpleFilamentSensor.cpp
       *
       *  Created on: 20 Jul 2017
       *      Author: David
       */
      
      #include "SimpleFilteredFilamentMonitor.h"
      #include "RepRap.h"
      #include "Platform.h"
      #include "GCodes/GCodeBuffer.h"
      
      SimpleFilteredFilamentMonitor::SimpleFilteredFilamentMonitor(unsigned int extruder, int type)
      	: FilamentMonitor(extruder, type), highWhenNoFilament(type == 12), filamentPresent(false), enabled(false)
      {
      	filterDistance = 2.0;
      }
      
      // Configure this sensor, returning true if error and setting 'seen' if we processed any configuration parameters
      bool SimpleFilteredFilamentMonitor::Configure(GCodeBuffer& gb, const StringRef& reply, bool& seen)
      {
      	if (ConfigurePin(gb, reply, INTERRUPT_MODE_NONE, seen))
      	{
      		return true;
      	}
      
      	seen = false;
      	float tempfilterDistance;
      
      	gb.TryGetFValue('L', tempfilterDistance, seen);
      	if (seen)
      	{
      		filterDistance = tempfilterDistance > 0 ? tempfilterDistance : 2.0;
      	}
      
      	if (gb.Seen('S'))
      	{
      		seen = true;
      		enabled = (gb.GetIValue() > 0);
      	}
      
      	if (seen)
      	{
      		Check(false, false, 0, 0.0);
      	}
      	else
      	{
      		reply.printf("Simple filtered filament sensor on endstop %d, %s, output %s when no filament, filament present: %s, filter distance: %.2f",
      						GetEndstopNumber(),
      						(enabled) ? "enabled" : "disabled",
      						(highWhenNoFilament) ? "high" : "low",
      						(filamentPresent) ? "yes" : "no",
      						(double)filterDistance);
      	}
      
      	return false;
      }
      
      void SimpleFilteredFilamentMonitor::GetConfiguration(const StringRef& reply)
      {
      	reply.printf("P%s C%d S%d L%.2f", highWhenNoFilament ? "12" : "11", GetEndstopNumber(), enabled, (double)filterDistance);
      }
      
      // ISR for when the pin state changes
      bool SimpleFilteredFilamentMonitor::Interrupt()
      {
      	// Nothing needed here
      	detachInterrupt(GetPin());
      	return false;
      }
      
      // Call the following regularly to keep the status up to date
      void SimpleFilteredFilamentMonitor::Poll()
      {
      	const bool b = IoPort::ReadPin(GetPin());
      	filamentPresent = (highWhenNoFilament) ? !b : b;
      }
      
      // Call the following at intervals to check the status. This is only called when extrusion is in progress or imminent.
      // 'filamentConsumed' is the net amount of extrusion since the last call to this function.
      FilamentSensorStatus SimpleFilteredFilamentMonitor::Check(bool isPrinting, bool fromIsr, uint32_t isrMillis, float filamentConsumed)
      {
      	Poll();
      	// adding the current extrusion measured value to the total value
      	AddExtrusionMeasured(filamentConsumed);
      
      	FilamentSensorStatus fstat = (!enabled || filamentPresent) ? FilamentSensorStatus::ok : FilamentSensorStatus::noFilament;
      
      	if (fstat == FilamentSensorStatus::noFilament)
      	{
      		fstat = FilamentSensorStatus::ok;
      
      		if (!firstNoFilament)
      		{
      			firstNoFilament = true;
      			followFilamentChange = GetExtrusionMeasured();
      		}
      		else
      		{
      			const float totalExtrusion = GetExtrusionMeasured();
      
      			if (totalExtrusion - followFilamentChange > filterDistance)
      			{
      				firstNoFilament = false;
      				fstat = FilamentSensorStatus::noFilament;			
                              }
      		}
      	}
      	else
      	{
      		firstNoFilament = false;
      	}
      
      	return fstat;
      }
      
      // Clear the measurement state - called when we are not printing a file. Return the present/not present status if available.
      FilamentSensorStatus SimpleFilteredFilamentMonitor::Clear()
      {
      	Poll();
      	return (!enabled || filamentPresent) ? FilamentSensorStatus::ok : FilamentSensorStatus::noFilament;
      }
      
      // Print diagnostic info for this sensor
      void SimpleFilteredFilamentMonitor::Diagnostics(MessageType mtype, unsigned int extruder)
      {
      	reprap.GetPlatform().MessageF(mtype, "Extruder %u sensor: %s\n", extruder, (filamentPresent) ? "ok" : "no filament");
      }
      
      // End
      
      posted in Firmware wishlist
      felek
      felek
    • RE: Endstop x,y

      Hi!

      You have very old firmware (1.x). This is the reason why your script doesn't work. It is dedicated to newest firrmware (3.x) so you need to upgrade. I prefer use Bossa and USB cable
      https://duet3d.dozuki.com/Wiki/Installing_and_Updating_Firmware

      posted in Duet Hardware and wiring
      felek
      felek
    • RE: Printer randomly stops and disconnect.

      @reahax Yes, it's ok

      posted in General Discussion
      felek
      felek
    • RE: Printer randomly stops and disconnect.

      @reahax Did you try replace sd card? I compiled (I hope correct version) firmware and checked map file. According to stack in you M122 the issue is reading blocks.

      10f3e82c-daee-4417-b872-bc138639cb58-image.png

      posted in General Discussion
      felek
      felek
    • RE: Event log doesn't want to start 3.1.1 Duet3 + SBC

      Any ideas?

      posted in Duet Hardware and wiring
      felek
      felek
    • RE: Event log doesn't want to start 3.1.1 Duet3 + SBC

      @Phaedrux I have next weird observation.

      I don't use M929 S1 in config.g file, but after restart firmware when I send M929(without S param!) I get information that logging is "enabled".
      I checked eventlogs.txt file but file is empty.
      If I send manually M929 S1 I always get information that logging is "disabled".

      Duet2 Ethernet (RRF 3.1.1) works ok.
      Duet3 6HC + 3HC + SBC (RRF 3.1.1) is not able to logging data.

      posted in Duet Hardware and wiring
      felek
      felek
    • RE: Event log doesn't want to start 3.1.1 Duet3 + SBC

      @Phaedrux I have Duet3 6HC + 3HC + RPi 4.
      I upgraded firmware on SBC using apt-get so it is official repo - RRF 3.1.1 (2020-05-19b2)

      I've already tested this same firmware on Duet2 Ethernet(without SBC) and logging works perfectly.

      Is SBC guilty?

      posted in Duet Hardware and wiring
      felek
      felek